使用ORMLite(框架)创建SQLite数据库

来源:互联网 发布:android 存储数据 编辑:程序博客网 时间:2024/06/05 05:46
在android中使用原始的SQLiteOpenHelper操作数据库显得过于繁琐,ORMLite可以快速有效地创建数据库

O: object 对象
R: relation 关系(关系型数据库)
M: mapping 映射(对象的名字对应了数据库的数据表,对象的属性对应了数据表中的列(字段))


步骤:
1)要先声明映射关系 –>使用注解
2)继承OrmLiteSqliteOpenHelper写一个DBHelper类
3)写一个DBUtil,利用DBHelper获得Ormlite提供的DAO对象进行数据的CRUD


step 1:UserBean.java

@DatabaseTablepublic class UserBean{    @DatabaseField    private String objId;    @DatabaseField    private String avatar;    @DatabaseField(id=true)    private String name;//用户名    @DatabaseField(canBeNull=false)    private String password;//密码    @DatabaseField(canBeNull=false)    private boolean gender;//true 男、false 女    public String getAvatar() {        return avatar;    }    public void setAvatar(String avatar) {        this.avatar = avatar;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }    public boolean isGender() {        return gender;    }    public void setGender(boolean gender) {        this.gender = gender;    }    public String getObjId() {        return objId;    }    public void setObjId(String objId) {        this.objId = objId;    }
  1. 首先在UserBean类上添加@DatabaseTable,标明这是一张数据表
  2. 接着在属性上添加@DatabaseField,标明这是数据表中的列

  3. 在属性的@DatabaseField后可以添加括号后缀
    1)(id=true)–>设置为唯一键
    2)(canBeNull=false)–>该列的内容不能为空
    3)(generatedId = true)–>表示id为主键且自动生成


step 2 DBHelper.java

package com.example.bmobdemo.util;import java.sql.SQLException;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import com.example.bmobdemo.bean.UserBean;import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;import com.j256.ormlite.support.ConnectionSource;import com.j256.ormlite.table.TableUtils;public class DBHelper extends OrmLiteSqliteOpenHelper{    //利用单例的方式获取DBHelper对象    private static DBHelper dbhelper;    public static DBHelper getInstance(Context context){        if(dbhelper==null){            synchronized (DBHelper.class) {                if(dbhelper==null){                    dbhelper = new DBHelper(context);                }            }        }        return dbhelper;    }//  private DBHelper(Context context, String databaseName,//          CursorFactory factory, int databaseVersion) {//      super(context, "user.db", null, 1);//  }    private DBHelper(Context context) {        super(context, "user.db", null, 1);    }    @Override    public void onCreate(SQLiteDatabase arg0, ConnectionSource arg1) {//      String sql=""  //有框架就不用这样写        //创建表        try {            TableUtils.createTableIfNotExists(arg1, UserBean.class);        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }    @Override    public void onUpgrade(SQLiteDatabase arg0, ConnectionSource arg1, int arg2,            int arg3) {        try {            TableUtils.dropTable(arg1, UserBean.class, true);//删表            onCreate(arg0, arg1);//建表        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }}

OrmLiteSqliteOpenHelper类本身已继承了SQLiteOpenHelper,其实就是间接继承了SQLiteOpenHelper
这里要实现onCreate和onUpgrade方法,利用单例的方式获取DBHelper对象就不用经常new。

private DBHelper(Context context) {        super(context, "user.db", null, 1);    }

不单单可以在这里设置表名,也可以在UserBean类上的注解这样写:@DatabaseTable(tableName = “tb_user”)


step 3 DBUtil.java

package com.example.bmobdemo.util;import java.sql.SQLException;import java.util.List;import com.example.bmobdemo.bean.UserBean;import com.j256.ormlite.dao.Dao;import android.content.ContentValues;import android.content.Context;import android.database.sqlite.SQLiteDatabase;public class DBUtil {    DBHelper dbhelper;    private Dao<UserBean, String> dao;    public DBUtil(Context context){        dbhelper = DBHelper.getInstance(context);        try {            dao = dbhelper.getDao(UserBean.class);        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }    public void add(UserBean bean){        try {            dao.create(bean);        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }    public void remove(UserBean bean){        try {            dao.delete(bean);        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }    public List<UserBean> query(){        try {            return dao.queryForAll();        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();//          throw new RuntimeException("查询时产生异常");            return null;//throw和return随便选一个        }    }}
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 微信备份以前的被覆盖了怎么办 之前微信号被新微信号覆盖了怎么办 微信发出的消息变成绿色怎么办 收了客户的资金被骗走了怎么办 淘宝退回去的衣服店家不接收怎么办 淘宝同款衣服价格相差很大该怎么办 淘宝买的衣服退回去了不退钱怎么办 淘宝客人退回的衣服有口红印怎么办 淘宝拍产品照片被投诉著作权怎么办 员工总在节假日忙的时候请假怎么办 买东西商家少给了货应该怎么办 买家退回的衣服有污渍卖家该怎么办 商家说衣服有污渍不退怎么办 退回商家换货不给寄应怎么办 毕业照跟拍摄影师拍砸了怎么办 韵达快递寄快递快递单号丢了怎么办 韵达快递把我的户口本弄丢了怎么办 淘宝卖家发货与实际货物不符怎么办 寄出去的快递不知道物流单号怎么办 淘宝买家所需要的货物填错怎么办 淘宝卖家顾客拒绝签收货要怎么办 闲鱼买家申请退货退款不发货怎么办 在闲鱼买东西买家恶意退货怎么办 淘宝卖家给的退货地址是国外怎么办 淘宝顾客下单了一件代发怎么办 闲鱼上卖东西快递单号填错了怎么办 淘宝收货后快递显示不签收怎么办 淘宝快递显示签收但没收到货怎么办 国外客人收到货后嫌弃质量差怎么办 理发15涨到20客人少了怎么办 微店买家收到货了又退款怎么办 百世快递单号查不到物流信息怎么办 知道快递单号怎么查物流信息怎么办 快递单号一直查不到物流信息怎么办 买家未收到货就发起仅退款怎么办 拼多多收货码短信没了怎么办 淘宝运费险快递单号填错怎么办 如果淘宝小二判定退款不同意怎么办 商品退回卖家电话关机不收货怎么办 咸鱼等待卖家提供凭证超时怎么办 闲鱼等待卖家上传凭证超时怎么办