一个轻量级的小的数据库第三方库Cupboard的使用

在android studio中添加依赖

  compile 'nl.qbusict:cupboard:2.1.4'

用法

需要在数据库中存放的实体类

Book类:
public class Book {
    //必须要有一个无参方法才可以
    public Book(){

    }
    public Book(Long _id, String title) {
        this._id = _id;
        this.title = title;
    }

    public Long _id;
    public String title;
    public Author author;
    public Date publishDate;
}

Author类:
public class Author {
    //_id的不可缺少
    public long _id;
    public String name;
    public int age;
    public String sex;
}

使用SQLiteOpenHelper创建一个数据库

public class CupboardSQLiteOpenHelper extends SQLiteOpenHelper {
    private static final String DATABASE_NAME = "book.db";
    private static final int DATABASE_VERSON = 1;

    static{
        //注册我们的实体类
        //静态导入了CupBoardFactory 所以可以直接使用里面的静态方法
        //之所以使用静态注册的方式 是因为 在类加载的时候就能在数据库中使用这两个实体类
        cupboard().register(Book.class);
        cupboard().register(Author.class);
    }

    public CupboardSQLiteOpenHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSON);
    }


    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        cupboard().withDatabase(sqLiteDatabase).createTables();//创建表的名字 注册几个实体类 就有几个表吧
    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
        cupboard().withDatabase(sqLiteDatabase).upgradeTables();//更新表
    }
}
代码中使用了cupboard 这是在创建数据库的过程中 为这个数据库注入什么样的实体类
不理解的搜一些SQLiteOpenHelper的教程 了解一下用法就可

数据库的用法

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        CupboardSQLiteOpenHelper helper = new CupboardSQLiteOpenHelper(this);//第一次创建的时候会创建数据库 就是会走helper的onCreate方法
        SQLiteDatabase database = helper.getWritableDatabase();

        Book b1 =new Book(1L,"红楼梦");
        Book b2 = new Book(2L,"三国演义");
        Book b3 = new Book(3L,"水浒传");
        Book b4 = new Book(4L,"西游记");



        cupboard().withDatabase(database).put(b1);
        cupboard().withDatabase(database).put(b2);
        cupboard().withDatabase(database).put(b3);
        cupboard().withDatabase(database).put(b4);

        //查询 id为2L的书
        Book book = cupboard().withDatabase(database).get(Book.class,2L);
        Log.i("TAG",book.title);

        //获取到默认是第一本
        Book firstBook = cupboard().withDatabase(database).query(Book.class).get();
        Log.i("TAG",firstBook.title);

        Cursor cursor = cupboard().withDatabase(database).query(Book.class).getCursor();
        //游标的操作

        QueryResultIterable<Book> itr = cupboard().withDatabase(database).query(Book.class).query();
        for(Book temp:itr){
            Log.i("TAG","temp"+temp.title);
        }
        itr.close();//用完需要关闭

//        cupboard().withDatabase(database).put();//如果更新某一个实体类 知道他的id就可全部鞥更新

        ContentValues values = new ContentValues();
        values.put("title","红楼梦");//新的字段
        cupboard().withDatabase(database).update(Book.class,values,"title = ?","水浒传"); //替换为 新的字段 where titile = 水浒传

        QueryResultIterable<Book> itr2 = cupboard().withDatabase(database).query(Book.class).query();
        for(Book temp:itr2){
            Log.i("TAG","temp"+temp.title);
        }
        itr.close();//用完需要关闭

        cupboard().withDatabase(database).delete(Book.class,1L);//删除id是1L的实体类
        cupboard().withDatabase(database).delete(new Book(3L,"西游记"));//根据id删除的
        cupboard().withDatabase(database).delete(Book.class,"title = ?","红楼梦");//删除操作  where

        Log.i("TAG","temp");
        QueryResultIterable<Book> itr3 = cupboard().withDatabase(database).query(Book.class).query();
        for(Book temp:itr3){
            Log.i("TAG","temp"+temp.title);
        }
        itr.close();//用完需要关闭


        ContentValues values1 = cupboard().withEntity(Book.class).toContentValues(b1);
        Log.i("TAG","temp1"+values1.getAsString("title"));

        //读一次数据库进行多次操作
        DatabaseCompartment dbc = cupboard().withDatabase(database);
        dbc.put(new Book());
        ContentValues vl = new ContentValues();
        values.put("title","红楼梦");//新的字段
        cupboard().withDatabase(database).update(Book.class,vl,"title = ?","水浒传");

    }
}

总的来说没有复杂的操作和难以理解的地方,对于我来说使用到的业务逻辑完全够用了,而且轻量级,工具不在于老旧 关键在于稳定和业务的实现的吧~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值