• android开发--ormlite


       ORMlite是类似hibernate的对象映射框架,主要面向java语言,同时,是时下最流行的android面向数据库的的编程工具。
      官方网站:http://ormlite.com/ 
      如果需要开发android,只需要下载core和android两个jar包:

        

      

      ORMlite的使用

      1,建立映射关系
     

     

      Ormlite与数据库的映射关系式通过注释来说明的。
      注释分为对于表的和对于单个列的:@DatabaseTable ,注释表的, @DatabaseField 注释单个列的。

    ·   首先注释:table,@

      DatabaseTable 如果默认为类名的话,后面不需要添加类名注释。

    ·   然后:确定需要的字段,在字段上面添加注释:@DatabaseField 如果对字段有特别的要求,那么添加以下相关的注释,例如id。

        

    @DatabaseTable(tableName="t_message")
    public class Message {
        
        @DatabaseField(generatedId=true)
        private int id;
        
        @DatabaseField(columnName="tou1")
        private String tou1;
        
        @DatabaseField(columnName="userName")
        private String userName;
        
        @DatabaseField(columnName="lastMessage")
        private String lastMessage;
        
        @DatabaseField(columnName="datetime")
        private String datetime;
        
        public String getTou1() {
            return tou1;
        }
        public void setTou1(String tou1) {
            this.tou1 = tou1;
        }

        2,建立数据库和基本的工具

       在Android的开发中,google原版封装了一个SqliteOpenHelper,供开发者调用,在OrmLite中,对原版的工具进行了加强,提供一个继承自SqliteOpenHelper的OrmLiteSqliteOpenHelper工具。 

      像android一样,我们继承这个工具类。 

    public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
    
        private static final String DB_NAME = "mydata.db"; // 数据库名称
        private static final int version = 2; // 数据库版本
        //定义每一张表的成员变量,其中一个功能:关闭helper,所有DAO对象清理
        private Dao<Message, Integer> messageDao;
        
        public Dao<Message, Integer> getMessageDao() {
            if (messageDao==null){
                try {
                    messageDao = getDao(Message.class);                
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            return messageDao;
        }
    
        public DatabaseHelper(Context context) {
            super(context, DB_NAME, null, version);
        }
    
        /*
         * 1.此方法,不会自定执行,因为它不是回调函数
         * 2.最好也不要自己调用,因为只应该执行1次
         */
        @Override
        public void onCreate(SQLiteDatabase arg0, ConnectionSource arg1) {
            // TODO Auto-generated method stub
            
        }
    
        /*
         * 此方法,不会自定执行,因为它不是回调函数
         */
        @Override
        public void onUpgrade(SQLiteDatabase arg0, ConnectionSource arg1, int arg2,
                int arg3) {
            // TODO Auto-generated method stub        
        }

      MyDatabaseOpenHelper类

      

    public class MyDatabaseOpenHelper extends SQLiteOpenHelper {
    
        private static final String DB_NAME = "mydata.db"; // 数据库名称
        private static final int version = 2; // 数据库版本
    
        public MyDatabaseOpenHelper(Context context) {
            super(context, DB_NAME, null, version);
        }
        @Override
        public void onCreate(SQLiteDatabase db) {
            // TODO Auto-generated method stub
            // 编写【从0开始到最新状态】建表语句
            Log.i("hi", "没有数据库,创建数据库,创建v2.0成功");
            String sql_message = "create table t_message (id int primary key,tou1  varchar(50),userName varchar(50),lastMessage varchar(50),datetime  varchar(50))";
            String sql_init_1 = "insert into t_message values (1,'abc','abc1','abcd1','hi1')";
            String sql_init_2 = "insert into t_message values (2,'abc','abc2','abcd2','hi1')";
            String sql_init_3 = "insert into t_message values (3,'abc','abc2','abcd2','hi1')";
            db.execSQL(sql_message);
            db.execSQL(sql_init_1);
            db.execSQL(sql_init_2);
            db.execSQL(sql_init_3);
        }

        MainActivity类,listview显示数据

    public class MainActivity extends Activity {
    
        private SimpleAdapter sa;
        private ListView lv;
        private List<Message> messageList = new ArrayList<Message>();
        private List<Map<String,Object> > messageList2 = new ArrayList<Map<String,Object> >();
        private List<Message> messageList3;//用于ORMLite 的演示
        
        private DatabaseHelper db_helper;
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.weixin);
    
            //此3行代码用于创建表结构,以及初始化数据
            MyDatabaseOpenHelper helper = new MyDatabaseOpenHelper(MainActivity.this);
            SQLiteDatabase db = helper.getWritableDatabase();
            db.close();
                
            lv = (ListView)findViewById(R.id.listView1);
            sa = new SimpleAdapter(this,
                    messageList2,//data 不仅仅是数据,而是一个与界面耦合的数据混合体
                    R.layout.listview_item_layout,
                    new String[] {"tou","userName","lastMessage","datetime"},//from 从来来
                    new int[] {R.id.imageView1,R.id.tv_userName,R.id.tv_lastMessage,R.id.tv_datetime}//to 到那里去
                    );
            lv.setAdapter(sa);
            lv.setOnItemClickListener(new OnItemClickListener() {
    
                @Override
                public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id) {
                    Map<String,Object> item = messageList2.get(position);
                    item.put("userName", "赵本山"+position);
                    sa.notifyDataSetChanged();
                    //Toast.makeText(MainActivity.this, (String)item.get("userName"), Toast.LENGTH_SHORT).show();
                    
                                            
                }         
            });
             //UI呈现在眼前
        @Override
        protected void onResume(){
            Log.i("ok", "onResume,界面出现了");
            
             //使用ORMLite
            db_helper = new DatabaseHelper(this);
            Dao<Message, Integer> message_dao = db_helper.getMessageDao();
            try {
                messageList3 = message_dao.queryForAll();
                //Log.i("ormlite", "记录条数:"+messageList3.size());
                String t = "记录条数:"+messageList3.size();
                Toast.makeText(this, t, Toast.LENGTH_LONG).show();
                
            } catch (SQLException e) {
                String t = "记出错:"+e.getMessage();
                Toast.makeText(this, t, Toast.LENGTH_LONG).show();
            }    
            
            for (int i = 0; i < messageList3.size(); i++) {
                        
                //定义一个界面与数据的混合体,一个item代表一行记录
                Map<String,Object> item  = new HashMap<String,Object>();
                //一行记录,包含多个控件
                item.put("tou", R.drawable.tou1);
                item.put("userName", messageList3.get(i).getUserName()+i);
                item.put("lastMessage", messageList3.get(i).getLastMessage());
                item.put("datetime",messageList3.get(i).getDatetime());
                messageList2.add(item);
            }
            super.onResume();
        }

        效果图

        

        注:ORMLite还提供了一些基类ORMLiteBaseActivity,ORMLiteBaseService之类的,便于数据库操作的,

  • 相关阅读:
    Learning Deep CNN Denoiser Prior for Image Restoration阅读笔记
    图象恢复学习笔记(二)
    Alpha matting算法发展
    structure machine learning projects 课程笔记
    improve deep learning network 课程笔记
    convolutional neural network 课程笔记
    Ajax上传File对象到服务器
    SQL Server存储过程模拟HTTP请求POST和GET协议
    Jexus是一款Linux平台上的高性能WEB服务器和负载均衡网关
    Maven安装jar包到本地仓库
  • 原文地址:https://www.cnblogs.com/yuluo123/p/6123484.html
Copyright © 2020-2023  润新知