从无到有看文档-----Android中ORMLite框架入门使用指南(为了小白)
来源:互联网 发布:用友nc java版本 编辑:程序博客网 时间:2024/06/06 22:13
本文会介绍学习框架基本功能的步骤。
更多的是如何根据官方文档提供的内容学习该框架。
高手请留情别打脸。
如果只是想简单的拿过来就用,那么可以移步鸿洋大神的博客。
原创文章,转载请注明出处:http://blog.csdn.net/android_zyf/article/details/61624549
一,下载Jar包
1,打开ORMLite官网(百度搜索即可)
http://ormlite.com/sqlite_java_android_orm.shtml
是不是看不懂?看不懂可以翻译啊~
2,找文档
一般网上的框架,都会提供文档供开发者使用(废话,要不然谁会啊)。
直接就能在当前页面找到文档链接,点进去就开整呗。
3,查看文档
看文档都说了,要使用Android应用程序需要两个jar文件
4,下载jar包
原谅我放荡不羁英文差,截图中的care指的是core(就不改了哈)
二,在工程中使用
1,导入jar包
把两个需要的jar包,放在工程的libs文件夹下。
2,继续文档(配置类)
可以看到文档的第二步叫配置类,这时就已经开始告诉我们如何去使用了。
但是这里的文字描述比较冗长,如果有基本的数据库概念的话,还是可以慢慢的看懂的。
但是后面有个设置类的链接,一般这种情况不要去点,点进去会发现好多内容,在刚开始学习一个框架的时候,是没有必要看的那么细的,我们首先要将该框架最基本的功能实现出来。
这个类就是我们常说的bean类,一般情况下一个bean类就对应着数据库中的一个表结构。
bean类中的属性,就对应表中的列。
import com.j256.ormlite.field.DatabaseField;import com.j256.ormlite.table.DatabaseTable;@DatabaseTable(tableName ="accounts")//设置表名public class Account { @DatabaseField(id = true)//设置name字段为主键 private String name; @DatabaseField private String password; public Account(){ // ORMLite需要一个无参数的构造函数 } public Account(String name, String password) { this.name = name; this.password = password; } 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; }}
3,继续文档(配置DAO)
可能有的小伙伴比较疑惑DAO是什么?也可能有些小伙伴根本不管他是什么,为什么叫DAO,能用就行了。
刚开始的话肯定是后者最好,刚开始学习,还是以出来效果为主,不求甚解也是可以的。
但是如果有精力的话,最好理解理解DAO是什么意思。
这里提供一个网址,感兴趣的可以去了解了解:http://www.ziqiangxuetang.com/design-pattern/data-access-object-pattern.html
在这里,DAO类就是来操作数据库内容的,不同类型的DAO就对应着操作数据库中的不同的表。
图中的connectSource这个参数是哪个,这一路过来也没见过啊。
4,继续文档(代码示例)
带着疑问我们继续往下看,connectSource参数是什么呢?这个创建DAO的代码要写在哪儿呢?还不知道对不对,我们根据浏览文档浏览到那里,是不知道要写在哪儿的,我们只能往下看,看到了有代码示例。
三,Android示例
1,Android基础
文档4.1Android基础的内容,就阐述了如何在Android系统下,使用ORMLite框架。
what the xxx,这么一堆,说好的不求甚解呢?(当然推荐还是尝试着看一看)
我们可以看到有个示例项目在线的链接,点进去。
2,我好像找到了什么
看看例子怎么写的。
3,看代码自己写Helper类
很尴尬的是你会发现不止翻译了内容,还把代码也翻译了,所以我们这么看。
会发现写法与Android提供的SQLiteOpenHelper类差不多,很类似。
下面是一部分简单的实现,对照上图中链接的内容写就能写出来了
import android.content.Context;import android.database.sqlite.SQLiteDatabase;import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;import com.j256.ormlite.dao.Dao;import com.j256.ormlite.support.ConnectionSource;import com.j256.ormlite.table.TableUtils;import java.sql.SQLException;/** * Created by zyf on 2017/3/12. *//*** * 数据库助手类,用于管理数据库的创建和升级。<br />这个类通常也提供其他类使用的DAO。 */public class MyOrmHelper extends OrmLiteSqliteOpenHelper { /** * 数据库名字 */ private static final String DB_NAME = "native.db"; /** * 数据库版本,第一次创建数据库时版本号为1, * 如果在这里改为2,那么再次初始化helper对象时,版本号就为2了 * 就会执行onUpgrade方法,也可以自己优化将它设为构造方法的参数,动态更改 */ private static final int DB_VERSION = 1; /** * 操作表Account的DAO对象<br /> * 泛型中第一个添入的是表存的内容对应的类型,第二个是ID列的类型。<br /> * 如果没有指定ID列,第二个参数可以填Object或Void */ private Dao<Account, String> accountDao; /** * 我们只有一个context对象是需要自己填入的。<br /> * 剩下的不是已经设置好的,就是可以使用默认的。<br /> * 所以我们再定义一个构造方法。 * * @param context */ public MyOrmHelper(Context context) { super(context, DB_NAME, null, DB_VERSION); } /** * 有了上面那个,这个就可以弃用了,注掉或删掉都行。 * * @param context * @param databaseName * @param factory * @param databaseVersion */ @Deprecated public MyOrmHelper(Context context, String databaseName, SQLiteDatabase.CursorFactory factory, int databaseVersion) { super(context, databaseName, factory, databaseVersion); } /** * 第一次创建时调用 * * @param sqLiteDatabase 数据库对象 * @param connectionSource 资源连接对象 */ @Override public void onCreate(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource) { //使用ORMLite提供的TableUtils类来创建数据库 try { TableUtils.createTable(connectionSource, Account.class); } catch (SQLException e) { e.printStackTrace(); } } /** * 当版本号增加时,也就是数据库要升级或更新时调用 * * @param sqLiteDatabase 数据库对象 * @param connectionSource 资源连接对象 * @param i 老版本 * @param i1 新版本 */ @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource, int i, int i1) { try { //下面方法的内容是文档中的例子 //demo(); //更改表以添加名为“age”的新列 getAccountDao().executeRaw("ALTER TABLE 'accounts' ADD COLUMN age INTEGER;"); } catch (SQLException e) { e.printStackTrace(); } } /** * 获取操作Account表的DAO对象 * @return */ public Dao getAccountDao() { if (accountDao == null) { try { accountDao = getDao(Account.class); } catch (SQLException e) { e.printStackTrace(); } } return accountDao; } /** * 在关闭数据库连接的时候,将DAO对象都制空<br /> * 有助于GC清理缓存 */ @Override public void close() { super.close(); accountDao = null; } private void demo(){ //删除原来的数据库 //不会保留原数据 TableUtils.dropTable(connectionSource,Account.class,true); //调用创建方法 onCreate(sqLiteDatabase,connectionSource); }}
四,使用示例
1,增加数据
create方法是在哪儿看到的呢?如果细心的一步步走过来的话,就能知道create是在三-3中,在示例代码中看到,它创建数据库时就做了添加的操作,我们只不过是把添加的操作拿出来了。
这里需要注意一个问题,如果重复添加name属性相同的数据,会报错,不会蹦是因为异常被catch了,原因是Account类中@DatabaseField(id = true)注解将name属性设为了主键,而在数据库中主键是不可以重复的。
//获得Helper类对象MyOrmHelper myOrmHelper = new MyOrmHelper(getContext());//创建要插入的数据Account account = new Account();account.setName("测试名字"+(anInt++));account.setPassword("测试密码");account.setAge(20);//根据helper对象获得操作Account表的DAO对象Dao dao = myOrmHelper.getAccountDao();dao.create(account);
2,查找数据
在示例代码中并没有查找数据的代码,我们也就不知道应该用什么方法去查。
所以只能继续找文档咯。
文档中肯定提供了查询数据的代码示例,找到就行了。
在4.2的上面,我发现了目录。
3,目录gogogo
在目录中,很容易就找到了自定义语句生成器,使用一个很简单的查询过程。
//查询所有List<Account> accounts = dao.queryForAll(); for (Account a :accounts) { Log.e(TAG, "onClick: " + a.getName());}//条件查询QueryBuilder<Account,String > queryBuilder = dao.queryBuilder();//添加where语句queryBuilder.where().eq("age",20).and().eq("name","测试名字4");//这个准备的方法我也没细看是在干什么,这都是在文档中找到的使用方法PreparedQuery<Account> preparedQuery = queryBuilder.prepare();//查询结果List<Account> whereQuery = dao.query(preparedQuery);for (Account a : whereQuery) { Log.e(TAG, "onClick: "+a.getName());}
剩下的更新删除什么的,小伙伴们就可以自己在文档中找啦。
还有这里是把name设置为主键了,一般不都是主键默认为id,并且自增的吗,这个该怎么设置呢?文档中肯定有啊哈哈哈。
与其去百度搜SRMLite如何更新数据,不如自己去文档中找一下,然后自己记下来或者写个博客啥的,出去装x不也能收获个666嘛。
- 从无到有看文档-----Android中ORMLite框架入门使用指南(为了小白)
- 项目中 Android ORMLite 框架的入门用法
- OrmLite框架 ——OrmLite 入门(android数据库操作框架)
- Android ORMLite 框架的入门用法
- Android ORMLite 框架的入门用法
- Android ORMLite框架入门用法教程
- Android ORMLite 框架的入门用法
- Android ORMLite 框架的入门用法
- Android ORMLite 框架的入门用法
- Android ORMLite 框架的入门用法
- Android ORMLite 框架的入门用法
- Android ORMLite 框架的入门用法
- android平台Ormlite框架简易入门笔记
- Android ORMLite 框架的入门用法
- Android ORMLite 框架的入门用法
- Android ORMLite 框架的入门用法
- Android ORMLite 框架的入门用法
- Android ORMLite 框架的入门用法
- html(二)
- Atitti 固化数据库表结构方案
- 给Java程序猿们推荐一些值得一看的好书
- Unable to connect to any of the specified MySQL hosts.
- 想记住这么一个人
- 从无到有看文档-----Android中ORMLite框架入门使用指南(为了小白)
- 关机、重启
- ubuntu( mint )下 vi输入方向键会变成ABCD的解决方法
- MySQL函数
- 渊子赛马
- Linux的shell命令2
- 枚举进程
- 【Restful接口】restful接口的两种使用方式
- 机器学习和深度学习资料列表