android数据库框架简书,Android数据库框架-----ORMLite 的基本用法

ORMLite 是一款非要流行的Android平台上的数据库框架,性能优秀,代码简洁;

简述: 优点: 1.轻量级;2.使用简单,易上手;3.封装完善;4.文档全面。

缺点:1.基于反射,效率较低(本人还没有觉得效率低);2.缺少中文翻译文档

准备工作:

集成方法:把jar包复制到as的libs文件夹下,并且引用jar包即可

之后创建一个类User,并完成相关配置

@DatabaseTable(tableName="tb_user")//标明数据库中的一张表,表名tb_user

public class User {

@DatabaseField(generatedId = true)//generatedId 表示id为主键且自动生成

private int id;

@DatabaseField(columnName = "name")

private String name;

@DatabaseField(columnName = "desc")

private String desc;

public User()

{

}

public User(String name, String desc)

{

this.name = name;

this.desc = desc;

}

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 DatabaseHelper extends OrmLiteSqliteOpenHelper {

private static final String TABLE_NAME = "sqlite-test.db";

/**

* userDao ,每张表对于一个

*/

private Dao userDao;

private DatabaseHelper(Context context)

{

super(context, TABLE_NAME, null, 2);

}

//创建表

@Override

public void onCreate(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource) {

try {

TableUtils.createTable(connectionSource,User.class);

} catch (SQLException e) {

e.printStackTrace();

}

}

//更新表

@Override

public void onUpgrade(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource, int i, int i1) {

try {

TableUtils.dropTable(connectionSource,User.class,true);//删除操作

onCreate(sqLiteDatabase, connectionSource);//创建

} catch (SQLException e) {

e.printStackTrace();

}

}

private static DatabaseHelper instance;

public static synchronized DatabaseHelper getHelper(Context context)

{

if (instance == null)

{

synchronized (DatabaseHelper.class)

{

if (instance == null)

instance = new DatabaseHelper(context);

}

}

return instance;

}

/**

* 获得userDao

*

* @return

* @throws SQLException

*/

public Dao getUserDao() throws SQLException

{

if (userDao == null)

{

userDao = getDao(User.class);

}

return userDao;

}

//释放资源

@Override

public void close() {

super.close();

}

}

MainActivity.Java

得到操作对象

DatabaseHelper helper = DatabaseHelper.getHelper(this);

1:添加

User user= new User("zhangqie"+ni++, "2B青年");

try {

helper.getUserDao().create(user);//返回>0则成功

} catch (SQLException e)

{

}

2:删除

try

{

return helper.getUserDao().deleteById(id);

} catch (SQLException e)

{

}

return 0;

3:修改

User user= new User("zhangqie----android", "2B青年");

user.setId(1);//修改Id=1的

try

{

return helper.getUserDao().update(user);

} catch (SQLException e)

{

}

return 0;

4:查询

try

{

List users=helper.getUserDao().queryForAll();

} catch (SQLException e)

{

}

以上的实现方式是基本的使用方式;只有一个类User操作的,万一有多个呢,就不好操作了;

接下来的这种方式:通过一个DatabaseHelper类就可以完成所有类的数据库操作

public class DatabaseHelpers extends OrmLiteSqliteOpenHelper {

private static final String TABLE_NAME = "sqlite-test.db";

private Map daos=new HashMap();

public DatabaseHelpers(Context context){

super(context,TABLE_NAME,null,4);

}

@Override

public void onCreate(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource) {

try {

TableUtils.createTable(connectionSource, User.class);

//多个类在此添加即可

//TableUtils.createTable(connectionSource, Article.class);

} catch (SQLException e) {

e.printStackTrace();

}

}

@Override

public void onUpgrade(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource, int i, int i1) {

try

{

TableUtils.dropTable(connectionSource, User.class, true);

//TableUtils.dropTable(connectionSource,Article.class,true);//多个类在此添加即可

onCreate(sqLiteDatabase, connectionSource);

} catch (SQLException e)

{

e.printStackTrace();

}

}

//整个DatabaseHelper使用单例只对外公布出一个对象,保证app中只存在一个SQLite Connection

private static DatabaseHelpers instance;

/**

* 单例获取该Helper

*

* @param context

* @return

*/

public static synchronized DatabaseHelpers getHelper(Context context)

{

context = context.getApplicationContext();

if (instance == null)

{

synchronized (DatabaseHelper.class)

{

if (instance == null)

instance = new DatabaseHelpers(context);

}

}

return instance;

}

public synchronized Dao getDao(Class clazz) throws SQLException

{

Dao dao = null;

String className = clazz.getSimpleName();

if (daos.containsKey(className))

{

dao = daos.get(className);

}

if (dao == null)

{

dao = super.getDao(clazz);

daos.put(className, dao);

}

return dao;

}

/**

* 释放资源

*/

@Override

public void close()

{

super.close();

for (String key : daos.keySet())

{

Dao dao = daos.get(key);

dao = null;

}

}

}

我已User为例介绍即可

用一个UserDao来完成相关操作,多个实体类建立多个 XXDao操作了即可

public class UserDao {

private Context context;

//通过此集合和DatabaseHelper的Map集合相对应 Dao中的类 如User 就可以随意变换了

private Dao userDaoOpe;

private DatabaseHelpers helper;

public UserDao(Context context)

{

this.context = context;

try

{

helper = DatabaseHelpers.getHelper(context);

userDaoOpe = helper.getDao(User.class);

} catch (SQLException e)

{

e.printStackTrace();

}

}

/**

* 增加一个用户

* @param user

*/

public int add(User user)

{

try

{

return userDaoOpe.create(user);

} catch (SQLException e)

{

e.printStackTrace();

}

return 0;

}

/**

* 增加一个用户

* @param id

*/

public int delete(int id)

{

try

{

return userDaoOpe.deleteById(id);

} catch (SQLException e)

{

e.printStackTrace();

}

return 0;

}

/**

* 修改

* @param user

*/

public int update(User user)

{

try

{

return userDaoOpe.update(user);

} catch (SQLException e)

{

e.printStackTrace();

}

return 0;

}

/**

* 查询

*/

public List query()

{

try {

return userDaoOpe.queryForAll();

} catch (SQLException e) {

e.printStackTrace();

}

return null;

}

public User get(int id)

{

try

{

return userDaoOpe.queryForId(id);

} catch (SQLException e)

{

e.printStackTrace();

}

return null;

}

}

得到操作对象UserDao

UserDao userDaos=new UserDao(this);

1:添加

User u1 = new User("zq"+(ni+=5), "2B青年");

userDaos.add(u1);

2:删除

int is= userDaos.delete(2);//成功 1 失败 0

3:修改

User u2 = new User("张三丰", "老道");

u2.setId(1);

userDaos.update(u2);

4:查询

List users=userDaos.query();

String username="";

for (int i=0;i

username+=+users.get(i).getId()+"-----"+users.get(i).getName()+"\n";

}

textView.setText(username);

两种效果差不多,实现方式不同而已,运行效果如下:

08b7364b4af0

image

由于代码太多,就不一一贴出来了,直接下载源码即可

上面简单介绍了如何使用ORMLite框架,[Android数据库框架-----ORMLite关联表的使用 ]

(https://www.jianshu.com/p/ae0ae06f59ae)将对其用法进行深入的介绍。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值