日期:2014-05-16 浏览次数:20467 次
的。不管你之前是使用SQLiteOpenHelper还是第三方库来进行数据库操作,本文都非常适合你。
public class Book {
   public Long _id;
   public String title;
   public Author author;
   public Date publishDate;
}接下来,我们将Book这个实体存储到数据库中。(变量名对应数据库中的字段名)
使用CupBoard来操作数据库,要用withDatabase()这个方法,并且CupBoard要求须提前将实体注入到SQLiteOpenHelper,我们使用static initializer block 在这里也许是最好的方法。下面看例子:
首先创建数据库:
public class CupboardSQLiteOpenHelper extends SQLiteOpenHelper {
    private static final String DATABASE_NAME = "myapp.db";
    private static final int DATABASE_VERSION = 1;
    static {
        // register our models
        cupboard().register(Book.class);
        cupboard().register(Author.class);
    }
    public CupboardSQLiteOpenHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        // this will ensure that all tables are created
        cupboard().withDatabase(db).createTables();
        // add indexes and other database tweaks
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // this will upgrade tables, adding columns and new tables.
        // Note that existing columns will not be converted
        cupboard().withDatabase(db).upgradeTables();
        // do migration work
    }
}        需要注意的是, 从上面代码看到,我们只添加了一个static初始化块和 
cupboard().withDatabase(db).createTables();
cupboard().withDatabase(db).upgradeTables();
而没有任何的继承(extends)和重写(override)。如何你使用的不是SQLiteOpenHelper,同样你也要添加一个static初始化块和update、upgrade
存储Objects
存储数据时使用withDatabase(db).put()方法。
Book book = ... long id = cupboard().withDatabase(db).put(book);
读取Objects
通过id获得一条数据:读取id为12的数据对象,如果没有返回null。
Book book = cupboard().withDatabase(db).get(Book.class, 12L);我们还可以使用query()来遍历数据库
// get the first book in the result
Book book=cupboard().withDatabase(db).query(Book.class).get();
// Get the cursor for this query
Cursor books=cupboard().withDatabase(db).query(Book.class).getCursor();
try{
     // Iterate books
     QueryResultIterable<Book>itr=cupboard().withDatabase(db).query(Book.class).iterate();
     for(Book book:itr){
      // do somet