数据库框架的简单使用,留作以后需要时查看,此使用方法也是从别人博客看来,自己经过实践后做记录,原博客地址https://www.jianshu.com/p/19731df3cd08,
1,导入框架
#Android studio 中使用,在build.gradl中添加依赖
dependencies {
compile 'org.litepal.android:core:2.0.0'
}
#在Eclipse中使用
下载jar包
https://github.com/LitePalFramework/LitePal/tree/master/downloads
2,配置litepal.xml文件
#新建assets目录,在assets目录中新建litepal.xml文件
#As中assets目录新建在project模式下的main目录内,与java目录同级
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<!--数据库名称-->
<dbname value = "song"/>
<!--数据库版本号-->
<version value = "1"/>
<!--将定义的数据实体类映射到数据表中-->
<list>
<mapping class="ben.Song"/>
</list>
<!--数据库文件存储路径,建议使用默认不配置此项-->
<!--<stroage value=""/>-->
</litepal>
3,配置application
#若程序中没有定义自己的application类,在manifest.xml的application中如下添加
<application
android:name="org.litepal.LitePalApplication"
.
.
.
</application>
#若程序中有定义自己的application类,需要在自己定义的application中初始化
public class YourOwnApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
LitePal.initialize(this);
}
...
}
3,创建数据对象
#创建数据对象,创建数据对象与创建javabean的方式类似,不同的是数据对象需要继承LitePalSupport
public class Song extends LitePalSupport {
private String name;
private String desc;
private int time;
//generated getters and setters.
}
#在litepal.xml文件中添加数据对象(路径指向数据对象),创建了几个数据对象,就添加几个<mappling/>
<!--将定义的数据实体类映射到数据表中-->
<list>
<mapping class="com.example.eyesee.litepaldemo.ben.Song"/>
</list>
4,更新数据库
#更新数据库只需要修改数据对象,然后在litepal.xml中修改version版本号即可,在下次操作数据库时会自动更新
5,保存数据,需要实例化数据对象
Song song = new Song();
song.setName("Hello");
song.setDesc("music");
song.setTime(180);
song.save();
6,查询数据库(条件查询时还可对查询结果排序后输出)
#根据ID查询
Song song = LitePal.find(Song.class, id);
#查询全部数据
List<Song> allSongs = LitePal.findAll(Song.class);
#按条件查询
List<Song> hello = LitePal.where("name like ? and time < ?", "Hello","200").find(Song.class);
7,更新数据
#先查询到数据,然后更改数据,
Song songUpdate = LitePal.find(Song.class, 1);
songUpdate.setPrice(20.99f);
songUpdate.save();
//更新指定id的数据
Song songUpdate = new Song();
songUpdate .setPrice(20.99f);
songUpdate .update(id);
//更新全部数据
Song songUpdate = new Song();
songUpdate .setPrice(20.99f);
songUpdate .updateAll("name = ?", "song");
8,删除数据
LitePal.delete(Song.class, id);
LitePal.deleteAll(Song.class, "duration > ?" , "350");
9,异步操作,防止耗时过久
//异步保存
song.saveAsync().listen(new SaveCallback() {
@Override
public void onFinish(boolean success) {
}
});
//异步删除
LitePal.deleteAllAsync(Song.class).listen(new UpdateOrDeleteCallback() {
@Override
public void onFinish(int rowsAffected) {
}
});
//异步查询
LitePal.findAllAsync(Song.class).listen(new FindMultiCallback() {
@Override
public <T> void onFinish(List<T> t) {
}
});
9,多数据库使用
//创建demo2.db数据库,同时创建singer,album,song表
LitePalDB litePalDB = new LitePalDB("demo2", 1);
litePalDB.addClassName(Singer.class.getName());
litePalDB.addClassName(Album.class.getName());
litePalDB.addClassName(Song.class.getName());
LitePal.use(litePalDB);
10,删除数据库
LitePal.deleteDatabase("demo2");