作者:Arthur小熊 | 来源:互联网 | 2023-05-18 16:43
在开发APP过程中,难免会用到数据库。而Android现主要使用SQLite数据库,这里就不对SQLite做介绍了。但SQLite的数据库操作语句难免有些繁琐,而ORMLite框架很好的
在开发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为主键且自动生成 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; }}
第三步 编写DAO类,主要是获取DAO对象,这里我们需要继承OrmLiteSqliteOpenHelper,下面的方法中都要做SQLException处理
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, Integer> dao;
public Dao,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, Integer> deleteBuilder = help.getDao().deleteBuilder();
deleteBuilder.where().le("id",4); //id小于等于4的条件删除
deleteBuilder.delete();
//多id删除
ArrayList ids = new ArrayList() {};
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 pForEq = help.getDao().queryForEq("personal_name", "name1");
for (PersonanlBean str : pForEq) {
Log.i("--ormlite", "--pForEqId:" + str.getId() + "--pForEqName:" + str.getName());
}
// where查找,id小于5
List pWheres = help.getDao().queryBuilder().where().le("id", 10).query();
for (PersonanlBean str : pWheres) {
Log.i("--ormlite", "--pWheres:" + str.getId() + "--pWheres:" + str.getName());
} // 整体查找,遍历
QueryBuilder, Integer> queryBuilder = help.getDao().queryBuilder();
List persOnals= queryBuilder.query();
for (PersonanlBean str : personals) {
Log.i("--ormlite", "--personals" + str.getId() + ":" + str.getName());
}
总结:由于自己水平有限,写的技术含金量很低,分享的水平有限,希望各位不吝赐教,有疑问或什么的欢迎私聊,总之希望您对我的博客进行一下指点与批评。源码已上传