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
    评论
"C语言字符串处理库函数大全-简书"是一篇在简书上的教程,介绍了C语言中常用的字符串处理库函数。 该教程详细介绍了C语言中字符串操作的相关函数,包括库函数的使用方法和示例代码。通过该教程,读者可以学习到如何使用C语言中的字符串处理函数来进行字符串的复制、连接、比较、查找、截取等操作。 在这篇教程中,读者可以了解到以下一些常见的字符串处理库函数: 1. strcpy:用于将一个字符串复制到另一个字符串中。 2. strcat:用于将一个字符串连接到另一个字符串的末尾。 3. strlen:用于计算一个字符串的长度。 4. strcmp:用于比较两个字符串的大小。 5. strchr:用于在一个字符串中查找指定字符的第一次出现位置。 6. strstr:用于在一个字符串中查找指定子串的第一次出现位置。 7. strtok:用于将一个字符串按照指定的分隔符分割成多个子串。 8. strncpy:用于将指定长度的字符串复制到目标字符串中。 9. strncmp:用于比较指定长度的两个字符串。 10. sprintf:用于将格式化的字符串输出到一个字符数组中。 这些函数在C语言中非常常用,并且对于字符串的处理非常方便。通过学习和掌握这些字符串处理库函数,可以更加高效地完成C语言程序中的字符串操作。 总之,"C语言字符串处理库函数大全-简书"这篇文章提供了丰富的字符串处理库函数以及示例代码,对于C语言开发者来说是一个很好的参考和学习资料。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值