Android使用LitePal数据库框架

LitePal是一个便于开发者使用SQLite的Android框架,极大的简化了SQLite的使用,这是它的github地址
https://github.com/LitePalFramework/LitePal

初期准备

1.导入

在build.gradle中加入依赖

dependencies {
    compile 'org.litepal.android:core:1.6.1'
}
2.配置litepal.xml

在app/src/main下新建文件夹assets,在该文件夹下new->Android resource file新建一个xml文件命名为litepal,复制以下内容到这个litepal.xml



    
    

    
    

    
    
    
    
    
    

  • dbname 该数据库的名字
  • version 该数据库的版本
  • list 配置映射类
  • storage 配置数据的储存位置,只有internal和external两个值
3.配置 LitePalApplication

为便于使用,避免不必要的参数传递,在AndroidManifest.xml中作如下配置


    
        ...
    

然后在Application中初始化

public class MyOwnApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        LitePal.initialize(this);
    }
    ...
}

使用

1.创建数据表

定义一个类,类名为表名,成员变量为表中各个属性,为便于操作,需继承自DataSupport,假如有Album和Song两个表

public class Album extends DataSupport {
    
    @Column(unique = true, defaultValue = "unknown")
    private String name;
    
    private float price;
    
    private byte[] cover;
    
    private List songs = new ArrayList();

    // generated getters and setters.
    ...
}
public class Song extends DataSupport {
    
    @Column(nullable = false)
    private String name;
    
    private int duration;
    
    @Column(ignore = true)
    private String uselessField;
    
    private Album album;

    // generated getters and setters.
    ...
}

然后在litepal.xml中的 中添加


    
    

这样在下次操作数据库的时候就会生成这个表。
得到数据库:

SQLiteDatabase db = LitePal.getDatabase();
2.更新数据表

只需要改变该类的成员变量,然后改变litepal.xml中的verson值及可更新数据表



3.添加数据

为该数据表添加数据只需新定义一个对象,然后调用save()就可以添加

Album album = new Album();
album.setName("album");
album.setPrice(10.99f);
album.setCover(getCoverImageBytes());
album.save();                    //svae()方法
Song song1 = new Song();
song1.setName("song1");
song1.setDuration(320);
song1.setAlbum(album);
song1.save();                     //svae()方法
Song song2 = new Song();
song2.setName("song2");
song2.setDuration(356);
song2.setAlbum(album);
song2.save();                    //svae()方法
4.更新数据

调用find()找到id为i的该行数据,然后改变相应值,调用save()即可更新该行数据
id为数据表创建时自动添加的一个属性

Album albumToUpdate = DataSupport.find(Album.class, 1);
albumToUpdate.setPrice(20.99f); // raise the price
albumToUpdate.save();

如果想一次修改多条数据,调用updateAll();

Album albumToUpdate = new Album();
albumToUpdate.setPrice(20.99f); // raise the price
albumToUpdate.updateAll("name = ?", "album");
5.删除数据

删除单条,用delete()

DataSupport.delete(Song.class, id);

删除多条

DataSupport.deleteAll(Song.class, "duration > ?" , "350");
6.查找数据

查找单条数据(根据id)

Song song = DataSupport.find(Song.class, id);

查找所有数据

List allSongs = DataSupport.findAll(Song.class);

按条件查找并排序

List songs = DataSupport.where("name like ? and duration < ?", "song%", "200").order("duration").find(Song.class);
7.异步操作

每次数据库操作默认是在main thread操作的,如果有耗时查询,需要用异步操作findAllAsync(),存储用saveAsync()
操作结果在onFinish()回调,

DataSupport.findAllAsync(Song.class).listen(new FindMultiCallback() {
    @Override
    public  void onFinish(List t) {
        List allSongs = (List) t;
    }
});
Album album = new Album();
album.setName("album");
album.setPrice(10.99f);
album.setCover(getCoverImageBytes());
album.saveAsync().listen(new SaveCallback() {
    @Override
    public void onFinish(boolean success) {

    }
});

你可能感兴趣的:(Android使用LitePal数据库框架)