Android 使用ORMLite 操作数据库
參考:http://blog.csdn.net/cjjky/article/details/7096987
?
ormlite 方法查詢:http://ormlite.com/javadoc/ormlite-core/com/j256/ormlite/dao/Dao.html
?
第一步:
? ? ? ? ? 下載ormlite-android-4.41.jar和ormlite-core-4.41.jar兩個jar包,放入工程的libs文件夾內(nèi),然后右鍵 builder path-->add path
第二步:對你要持久化的類進行注解(記住.提供一個默認無參構(gòu)造)
?
@DatabaseTable(tableName="student") tableName 表明 public class Student {public static final String ID="student_id";public static final String NAME="student_name";public static final String LASTNAME="student_lastname";public static final String RESOURCE="student_resource"; public static final String TEACHER_ID="tacher_id";@DatabaseField(generatedId=true,useGetSet=true,columnName=ID) private int id;@DatabaseField(foreignColumnName=Teacher.ID,foreign=true,foreignAutoCreate=true)private Teacher teacher_id;@DatabaseField(useGetSet=true,columnName=NAME) private String name;@DatabaseField(useGetSet=true,columnName=LASTNAME)private String lastName;@DatabaseField(useGetSet=true,columnName=RESOURCE)private double resource;一系列的set get 方法...?
過一會將詳細的列出各種注解的意思,這里只需要知道 @DatabaseTable 指定類對應(yīng)的表明,@DatabaseField 對應(yīng)的字段名,
第二步:
? ? ? ? ?創(chuàng)建一個database helper類,繼承OrmLiteSqliteOpenHelper 實現(xiàn) onCreate 和?onUpgrade ,這個類類似于 android 的SQLiteOpenHelper方法 ,大家應(yīng)該知道這個類的作用了,創(chuàng)建刪除數(shù)據(jù)庫應(yīng)該使用TableUtils工具類的方法.一會下面介紹
第二步:分兩種情況,一個直接在Activity中使用OrmLite?創(chuàng)建的dao類
? ? ? ? ? ? ?(1)這時候,你的Activity類應(yīng)該實現(xiàn)OrmLiteBaseListActivity, OrmLiteBaseService或者 OrmLiteBaseTabActivity,然后在類中使用getHelper().getDao(Class clazz);創(chuàng)建你的DAO 對象,然后使用其中的方法對數(shù)據(jù)進行操作.
? ? ? ? ? ? ?(2)有些人和我一樣.不喜歡將DAO層和Activity層放在一起,喜歡講操作數(shù)據(jù)庫的類單獨放在DAO包中,形成DAO層,貌似是web開發(fā)留下的..........................習慣
? ? ? ? ? ? ? ? ? ? ? ? ? ? 這時候,我們需要在自定義的DAO中使用?OrmLiteSqliteOpenHelper?helper=OpenHelperManager.getHelper(context,BasicDAO.class);方法來得到helper對象,這個對象需要保持,根據(jù)文檔上說在銷毀對象的時候需要OpenHelperM ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? anager.releaseHelper();使用這個方法來釋放掉helper對象,然后使用helper對象的getDao(Student.class);方法得到DAO類,
? ? ? ? ? ? ? ? ? ? ? ? ? ? 然后我們就可以使用DAO類,完成各種各樣的數(shù)據(jù)庫 增刪改操作.
? ? ? ? ? ? ? ? ? ? ? ? ? ? 例如:
?
public class StudentDAO{Dao dao=null;private Context context=null;OrmLiteSqliteOpenHelper helper=null;public StudentDAO(Context context) {this.context=context;// TODO Auto-generated constructor stubhelper=OpenHelperManager.getHelper(context,BasicDAO.class);try {dao=helper.getDao(Student.class);} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}@Override protected void finalize() throws Throwable { // TODO Auto-generated method stub OpenHelperManager.release();//釋放掉helper super.finalize(); } }?
接下來介紹..各種各樣的注解
首先介紹 @DatabaseTable
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 參數(shù):tableName指定表明,沒有將使用類名作為表明
? ? ? ? ? ? ? ? ?@DatabaseField
?
| cloumnName:指定字段名,不指定則變量名作為字段名 | ?canBeNull:是否可以為null | ? |
| dataType:指定字段的類型 | defaultValue:指定默認值 | ?width:指定長度 |
| ?id:指定字段為id | generatedId:指定字段為自增長的id,不能id,generatedIdSequence通用 | foreign 指定這個字段的對象是一個外鍵,外鍵值是這個對象的id |
| useGetSet:指定ormlite訪問變量使用set,get方法默認使用的是反射機制直接訪問變量 | throwIfNull,如果空值拋出異常 | persisted:指定是否持久化此變量,默認true |
| unique:字段值唯一 | uniqueCombo整列的值唯一 | index:索引 |
| uniqueIndex 唯一索引 | foreignAutoRefresh 外鍵值,自動刷新 | foreignAutoCreate 外鍵不存在時是否自動添加到外間表中 |
| foreignColumnName外鍵字段指定的外鍵表中的哪個字段 | ? | ? |
?
? ? ? ? ? ? ? ? ?@ForeignCollectionField ?表示這個表中的數(shù)據(jù)在其他表中是外鍵(其他表的某個字段使用@DatabaseField(foreignColumnName=一個表的id鍵名,foreign=true)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??eager 表示該集合是在初始化這個對象的時候,是否講對象取出還是在遍歷的時候才取出,默認false遍歷的時候才取出,size()方法也會引起遍歷
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??這個注解注解的字段只能是ForeignCollection<T> or Collection<T> 對象
TableUtils
接下來介紹TableUtils完成對數(shù)據(jù)中的表進行創(chuàng)建,刪除,清空表格,只要看一下它的靜態(tài)方法.做過程序的應(yīng)該都會
?
Dao<T,V>
包含兩個泛型,第一個泛型表DAO操作的類,第二個表示操作類的主鍵類型
主要方法:
? ? ? ? ? ? ?create:插入一條數(shù)據(jù)
? ? ? ? ? ? ?createIfNotExists:如果不存在則插入
? ? ? ? ? ? ?createOrUpdate:如果指定id則更新
? ? ? ? ? ? ?queryForId:更具id查找
? ? ? ? ? ? ?update 查找出數(shù)據(jù)
? ? ? ? ? ? ?refresh的解釋:If you want to use other elds in the Account, you must?call refresh on the accountDao class to get the Account object lled in.
? ? ? ? ? ? ?delte 刪除數(shù)據(jù)
? ? ? ? ? ? ?queryBuilder() 創(chuàng)建一個查詢生成器:進行復(fù)雜查詢
? ? ? ? ? ??deleteBuilder() 創(chuàng)建一個刪除生成器,進程復(fù)雜條件刪除
? ? ? ? ? ??updateBuilder() 創(chuàng)建修條件生成器,進行復(fù)雜條件修改
條件查找器DeleteBuilder,QueryBuilder,UpdateBuilder
? ? ? ? ? ? 查找器是幫助拼接條件語句的.比如查找器中有 where()方法 and()方法 eq()方法 lt()方法 qt()方法 between方法這些方法很直觀..很容易都明了什么意思
? ? ? ? ? ? 最后使用prepare()方法生成條件使用DAO.query || DAO.delete|| DAO.update 方法執(zhí)行
? ? ? ? ? ?可以使用查找生成器QueryBuilder 的 orderby limit offset 方法進行排序,分頁,?
總結(jié)
以上是生活随笔為你收集整理的Android 使用ORMLite 操作数据库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows XP Mode
- 下一篇: 给Ubuntu软件升级命令