用过ssh,s2sh的肯定不会陌生 ,应该一学就会

第一步:

下载ormlite-android-4.41.jar和ormlite-core-4.41.jar两个jar包,放入工程的libs文件夹内,然后右键 builder path-->add path

第二步:对你要持久化的类进行注解(记住.提供一个默认无参构造)

  1. @DatabaseTable(tableName="student")  tableName 表明
  2. public class Student {
  3. public static final String ID="student_id";
  4. public static final String NAME="student_name";
  5. public static final String LASTNAME="student_lastname";
  6. public static final String RESOURCE="student_resource";
  7. public static final String TEACHER_ID="tacher_id";
  8. @DatabaseField(generatedId=true,useGetSet=true,columnName=ID)
  9. private int id;
  10. @DatabaseField(foreignColumnName=Teacher.ID,foreign=true,foreignAutoCreate=true)
  11. private Teacher teacher_id;
  12. @DatabaseField(useGetSet=true,columnName=NAME)
  13. private String name;
  14. @DatabaseField(useGetSet=true,columnName=LASTNAME)
  15. private String lastName;
  16. @DatabaseField(useGetSet=true,columnName=RESOURCE)
  17. private double  resource;
  18. 一系列的set get 方法...

过一会将详细的列出各种注解的意思,这里只需要知道 @DatabaseTable 指定类对应的表明,@DatabaseField 对应的字段名,

第二步:

创建一个database helper类,继承OrmLiteSqliteOpenHelper 实现 onCreate 和 onUpgrade ,这个类类似于 android 的SQLiteOpenHelper方法 ,大家应该知道这个类的作用了,创建删除数据库应该使用TableUtils工具类的方法.一会下面介绍

第二步:分两种情况,一个直接在Activity中使用OrmLite 创建的dao类

(1)这时候,你的Activity类应该实现OrmLiteBaseListActivity, OrmLiteBaseService或者 OrmLiteBaseTabActivity,然后在类中使用getHelper().getDao(Class clazz);创建你的DAO 对象,然后使用其中的方法对数据进行操作.

(2)有些人和我一样.不喜欢将DAO层和Activity层放在一起,喜欢讲操作数据库的类单独放在DAO包中,形成DAO层,貌似是web开发留下的..........................习惯

这时候,我们需要在自定义的DAO中使用 OrmLiteSqliteOpenHelper helper=OpenHelperManager.getHelper(context,BasicDAO.class);方法来得到helper对象,这个对象需要保持,根据文档上说在销毁对象的时候需要OpenHelperM                                   anager.releaseHelper();使用这个方法来释放掉helper对象,然后使用helper对象的getDao(Student.class);方法得到DAO类,

然后我们就可以使用DAO类,完成各种各样的数据库 增删改操作.

例如:

  1. public class StudentDAO{
  2. Dao<student integer=""> dao=null;
  3. private Context context=null;
  4. OrmLiteSqliteOpenHelper helper=null;
  5. public StudentDAO(Context context) {
  6. this.context=context;
  7. // TODO Auto-generated constructor stub
  8. helper=OpenHelperManager.getHelper(context,BasicDAO.class);
  9. try {
  10. dao=helper.getDao(Student.class);
  11. } catch (SQLException e) {
  12. // TODO Auto-generated catch block
  13. e.printStackTrace();
  14. }
  15. }
  16. @Override
  17. <span style="white-space:pre">  </span>protected void finalize() throws Throwable {
  18. <span style="white-space:pre">      </span>// TODO Auto-generated method stub
  19. <span style="white-space:pre">      </span>OpenHelperManager.release();//释放掉helper
  20. <span style="white-space:pre">      </span>super.finalize();
  21. <span style="white-space:pre">  </span>}
  22. }
  23. </student>

接下来介绍..各种各样的注解

首先介绍 @DatabaseTable

参数: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  表示这个表中的数据在其他表中是外键(其他表的某个字段使用@DatabaseField(foreignColumnName=一个表的id键名,foreign=true)

eager 表示该集合是在初始化这个对象的时候,是否讲对象取出还是在遍历的时候才取出,默认false遍历的时候才取出,size()方法也会引起遍历

这个注解注解的字段只能是ForeignCollection<T> or Collection<T> 对象

TableUtils

接下来介绍TableUtils完成对数据中的表进行创建,删除,清空表格,只要看一下它的静态方法.做过程序的应该都会

Dao<T,V>

包含两个泛型,第一个泛型表DAO操作的类,第二个表示操作类的主键类型

主要方法:

create:插入一条数据

createIfNotExists:如果不存在则插入

createOrUpdate:如果指定id则更新

queryForId:更具id查找

update 查找出数据

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 删除数据

queryBuilder() 创建一个查询生成器:进行复杂查询

deleteBuilder() 创建一个删除生成器,进程复杂条件删除

updateBuilder() 创建修条件生成器,进行复杂条件修改

条件查找器DeleteBuilder,QueryBuilder,UpdateBuilder

查找器是帮助拼接条件语句的.比如查找器中有 where()方法 and()方法 eq()方法 lt()方法 qt()方法 between方法这些方法很直观..很容易都明了什么意思

最后使用prepare()方法生成条件使用DAO.query || DAO.delete|| DAO.update 方法执行

可以使用查找生成器QueryBuilder 的 orderby limit offset 方法进行排序,分页,

【转】Android 使用ORMLite 操作数据库的更多相关文章

  1. Android 使用ORMLite 操作数据库

    参考:http://blog.csdn.net/cjjky/article/details/7096987 ormlite 方法查询:http://ormlite.com/javadoc/ormlit ...

  2. [ 转]Android快速开发–使用ORMLite操作数据库

    OrmLite是一个数据库操作辅助的开源框架,主要面向Java语言.在Android面向数据库开发中,是一个比较流行的开源框架,方便操作而且功能强大,今天来学习一下,最近的项目中也有所涉及,写个博客来 ...

  3. Android——使用SQLiteDatabase操作SQLite数据库

    除了可以使用文件或SharedPreferences存储数据,还可以选择使用SQLite数据库存储数据. 在Android平台上,集成了一个嵌入式关系型数据库-SQLite,SQLite3支持 NUL ...

  4. android: SQLite使用 SQL 操作数据库

    虽然 Android 已经给我们提供了很多非常方便的 API 用于操作数据库,不过总会有一些 人不习惯去使用这些辅助性的方法,而是更加青睐于直接使用 SQL 来操作数据库.这种人 一般都是属于 SQL ...

  5. Android——采用SQLiteDatabase操作SQLite数据库

    除了能够使用文件或SharedPreferences存储数据.还能够选择使用SQLite数据库存储数据. 在Android平台上,集成了一个嵌入式关系型数据库-SQLite,SQLite3支持 NUL ...

  6. Xamarin.Android 使用 SQLiteOpenHelper 进行数据库操作

    一.前言 在手机中进行网络连接不仅是耗时也是耗电的,而耗电却是致命的.所以我们就需要数据库帮助我们存储离线数据,以便在用户未使用网络的情况下也可以能够使用应用的部分功能,而在需要网络连接的功能上采用提 ...

  7. 小米红米1 android 4.4.4上操作数据库异常问题

    产生的问题: 小米红米1 android 4.4.4上,按HOME键,应用进入后台,再启动,应用进程直接挂掉 解决的方法: 这个是操作数据库,数据库关闭之后导致的异常,解决的方法: //4.0以上的版 ...

  8. Android学习之基础知识九 — 数据存储(持久化技术)之使用LitePal操作数据库

    上一节学习了使用SQLiteDatabase来操作SQLite数据库的方法,接下来我们开始接触第一个开源库:LitePal.LitePal是一款开源的Android数据库框架,它采用了对象关系映射(O ...

  9. Android:日常学习笔记(10)———使用LitePal操作数据库

    Android:日常学习笔记(10)———使用LitePal操作数据库 引入LitePal 什么是LitePal LitePal是一款开源的Android数据库框架,采用了对象关系映射(ORM)的模式 ...

随机推荐

  1. winform 记录全局异常捕获

    这篇文章主要是备用 记录winform程序捕获全局异常. /// <summary> /// 应用程序的主入口点. /// </summary> public static A ...

  2. 一个包的libevent流程

    //一个发包的流程 第一个包就是客户端的心跳包,现在加了版本的包 再来看看这个发包打包过程,过程坚持,但理解费劲 void NGP::OnliveTimer()//客户端心跳,5s发一次 { Send ...

  3. [工作积累] OpenGL ES3.0: glInvalidateFramebuffer

    https://www.khronos.org/opengles/sdk/docs/man3/html/glInvalidateFramebuffer.xhtml 这个在GLES2.0上只有Exten ...

  4. DB2 的create or update方法

    通过merge方法实现的: MERGE INTO IFEBASE.STYLE AS MT USING (SELECT :scenario AS SCENARIO_ID, :style AS SHAPE ...

  5. Java正则表达式匹配例子

    Java正则表达式匹配例子 package com.ibm.test; import java.util.regex.Matcher; import java.util.regex.Pattern; ...

  6. Javacript中(function(){})() 与 (function(){}()) 区别 {转}

    这个问题可以从不同的角度来看,但从结果上来说 :他们是一样的.首先,如果从AST(抽象语法树)的角度来看,两者的AST是一模一样的,最终结果都是一次函数调用.因此,就解析器产生的结果论而言,两者是没有 ...

  7. javascript实现数据结构:串--堆分配存储表示

    堆分配存储表示 这种存储表示的特点是,仍以一组地址连续的存储单元存放串值字符序列,但它们的存储空间是在程序执行过程中动态分配而得. 结构图: 实现: function HString(){ this. ...

  8. java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed

    org.springframework.dao.TransientDataAccessResourceException: ### Error updating database. Cause: ja ...

  9. POJ 2075

    #include<iostream> #include<stdio.h> #include<string> #include<map> #include ...

  10. POJ 1458

    #include <iostream> #include <string> #define MAXN 1000 using namespace std; string s_1; ...