学习这个查了不少博客 , 特别是鸿洋大神的, 说实话这个并不是很好用, 如果不是有特殊需求的话, 郭霖的LitePal可能对新手来说更简单一些
1. 第一步添加依赖
compile 'com.j256.ormlite:ormlite-android:5.0'
或http://ormlite.com/releases/
下载jar包
2. 建立数据库实体类
tableName = "tab_violation") //定义表名 (public class Violation { //generatedId 定义 主键 自增长, //columnName 定义该字段在数据库中的列名 //使用generateId=true,则id由数据库自己维护,自动增长效果 //设置注解 id=true 时id可以由我们自己赋值 columnName = "id",generatedId = true) ( private int id; columnName = "viol_count") ( private int violCount; columnName = "car_id") ( private String carId; columnName = "minut_sun") ( private int minuteSun; columnName = "money_sun") ( private int moneySun; // 定义一对多关系, 违章包含许多违章详情 // 必须用ForeignCollection 不能用ArrayList // Collection : 集合, List实现了Collection 接口 eager = false) ( private ForeignCollection <Result> violEvent; public Violation(){} //必须要添加无参构造方法 public Violation(int violCount, String carId, int minute, int money) { this.violCount = violCount; this.carId = carId; this.minuteSun = minute; this.moneySun = money; } //代码省略,大量生成get和set } tableName = "tab_violinfo") (public class ViolInfo { columnName = "id",generatedId = true) ( private int id; // foreign = true 定义外键 // foreignAutoRefresh = true 自动刷新,为了省事最好写上,不然通过外键获取到的只有id // 外键如果自定义id, 那么默认为 viol_id foreign = true,foreignAutoRefresh = true) ( private Violation viol; columnName = "viol_time") ( private String violTime; columnName = "viol_loc") ( private String violLoc; columnName = "viol_status") ( private boolean violStatus; columnName = "viol_Info") ( private String violInfo; columnName = "viol_time") ( private String violTime; columnName = "viol_minute") ( private String violMinute; columnName = "viol_money") ( private String violMoney; }
3.将实体类与数据库关联
public class DataBaseHelper extends OrmLiteSqliteOpenHelper { private static final String TABLE_NAME = "text.db"; private static DataBaseHelper helper ; // Dao<T,ID> 泛型接口, T 代表 Dao实体类, ID 代表主键类型 //private Dao<Violation,Integer> violationDao; // 用来存放Dao的 Map private Map<String, Dao> daos = new HashMap<String, Dao>(); // 私有化构造方法, 不能new对象, 是实现单例模式的一部分 private DataBaseHelper (Context context){ // 参数分别为 上下文, 表名 , 游标实例(为null就好) , 数据库版本 super(context,TABLE_NAME,null,1); } public void onCreate(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource) { try { // TableUtils.createTable() 是库自带的建表工具 TableUtils.createTable(connectionSource, Violation.class); } catch (SQLException e) { e.printStackTrace(); } } //更新表, 即删除后再重新创建 public void onUpgrade(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource, int i, int i1) { try { // 删除表 TableUtils.dropTable(connectionSource, Violation.class, true); }catch (SQLException e) { e.printStackTrace(); } onCreate(sqLiteDatabase,connectionSource); } // 单例模式获取 DataBaseHelper 实例 public static DataBaseHelper getHelper(Context context){ context = context.getApplicationContext(); if (helper == null){ synchronized (DataBaseHelper.class) { if (helper == null) //这里创建对象 helper = new DataBaseHelper(context); } } return helper; } // 获得 Dao 实例