在开发APP过程中,难免会用到数据库。而Android现主要使用SQLite数据库,这里就不对SQLite做介绍了。但SQLite的数据库操作语句难免有些繁琐,而ORMLite框架很好的简化了SQLite的操作语句,所以我给大家介绍一下ORMLite的简单使用方法。使用的IDE是AndroidStudio。
第一步:集成ORMLite的jar,在gradle中添加
compile 'com.j256.ormlite:ormlite-android:4.48'
compile 'com.j256.ormlite:ormlite-core:4.48'
第二步:创建自己的Bean类
@DatabaseTable(tableName = "tb_personal") //创建的表名 public class PersonanlBean { @DatabaseField(generatedId = true) //id为主键且自动生成第三步 编写DAO类,主要是获取DAO对象,这里我们需要继承OrmLiteSqliteOpenHelper,下面的方法中都要做SQLException处理private int id; @DatabaseField(columnName = "personal_name") //列名为persinal_name private String name; @DatabaseField(columnName = "personal_desc") private String desc; public PersonanlBean() { } public PersonanlBean(String name,String desc) { this.name = name; this.desc = desc; }//利用快捷键快速生成setter、getter方法 public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDesc() { return desc; } public void setDesc(String desc) { this.desc = desc; } }
public class DaoHelp extends OrmLiteSqliteOpenHelper{ private static final String TABLE_NAME = "sqlite-school.db"; private DaoHelp(Context context) { super(context, TABLE_NAME, null, 7); //必须实现父类的方法,其中第二个参数是创建的数据库名,第4个参数是版本号,用于升级等操作 } @Override public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) { try{ TableUtils.createTable(connectionSource, PersonanlBean.class); //根据PersonalBean来进行创建操作 Log.i("--ormlite:", "--onCreate:"); }catch (SQLException e){ e.printStackTrace(); } } @Override public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion) { try{ TableUtils.dropTable(connectionSource, PersonanlBean.class, true); //如果版本有更新则会执行onUpgrade方法, TableUtils.createTable(connectionSource, PersonanlBean.class); //更新数据库先删除数据库再创建一个新的 Log.i("--ormlite:", "--onUpgrade:"); }catch (SQLException e){ e.printStackTrace(); } } // 用单例来生成DaoHelp对象 private static DaoHelp daohelp; public static synchronized DaoHelp getDaoHelp(Context context){ if(daohelp == null){ synchronized (DaoHelp.class){ if(daohelp == null) daohelp = new DaoHelp((context)); } } return daohelp; } //利用生成的daoHelp对象来生成Dao对象,该对象是处理数据库的关键要素 private Dao<PersonanlBean, Integer> dao; public Dao<PersonanlBean,Integer> getDao() throws SQLException{ if(dao == null){ dao = getDao(PersonanlBean.class); } return dao; } //释放资源 @Override public void close(){ super.close(); Log.i("--ormlite:", "--close:"); dao = null; } }第四步 就是我们的数据库处理了,由于是学习,我没有做太多的UI处理,这里可能需要读者自己做下简单的UI调整,我就不做太多xml文件的描述了
直接上方法吧
* 获取DaoHelp对象
DaoHelp help = DaoHelp.getDaoHelp(this);
1:添加数据
//添加数据 for(int i = 0; i < 5; i++) { String str1 = "name" + i; String str2 = "desc" + i; PersonanlBean personal = new PersonanlBean(str1, str2); help.getDao().createIfNotExists(personal); //这里create的相关方法有很多就不一一描述了 }2:删除数据
// 创建Builder类进行复杂的where删除 DeleteBuilder<PersonanlBean, Integer> deleteBuilder = help.getDao().deleteBuilder(); deleteBuilder.where().le("id",4); //id小于等于4的条件删除 deleteBuilder.delete(); //多id删除 ArrayList<Integer> ids = new ArrayList<Integer>() {}; ids.add(7); ids.add(8); help.getDao().deleteIds(ids); //id在ids集合中就删除 // 直接删除 help.getDao().delete(help.getDao().queryForId(9)); //指定对象删除 //指定id删除 help.getDao().deleteById(10); //指定id为的删除3:修改数据
UpdateBuilder updateBuilder = help.getDao().updateBuilder(); //获取Builder对象 updateBuilder.where().eq("id", 15); //当id为15时准备修改 updateBuilder.updateColumnValue("personal_name", "sasasasasas"); //把id为15的数据进行修改 updateBuilder.update(); //执行修改操作4:查找数据
// id查找,查找id为11的数据 PersonanlBean pForId = help.getDao().queryForId(11); if(pForId != null) { Log.i("--ormlite", "--pForIdId:" + pForId.getId() + "--pForIdName:" + pForId.getName()); } // 字段查找,查找personal_name列名中有“name1”的所有数据,返回时集合 List<PersonanlBean> pForEq = help.getDao().queryForEq("personal_name", "name1"); for (PersonanlBean str : pForEq) { Log.i("--ormlite", "--pForEqId:" + str.getId() + "--pForEqName:" + str.getName()); } // where查找,id小于5 List<PersonanlBean> pWheres = help.getDao().queryBuilder().where().le("id", 10).query(); for (PersonanlBean str : pWheres) { Log.i("--ormlite", "--pWheres:" + str.getId() + "--pWheres:" + str.getName()); }// 整体查找,遍历 QueryBuilder<PersonanlBean, Integer> queryBuilder = help.getDao().queryBuilder(); List<PersonanlBean> personals = queryBuilder.query(); for (PersonanlBean str : personals) { Log.i("--ormlite", "--personals" + str.getId() + ":" + str.getName()); }
总结:由于自己水平有限,写的技术含金量很低,分享的水平有限,希望各位不吝赐教,有疑问或什么的欢迎私聊,总之希望您对我的博客进行一下指点与批评。源码已上传