Android数据存储之LitePal
LitePal: 这是github上的开源库,稳定性强,操作简单,效率高等等
运用:
1.在build.gradle(app)添加依赖:
compile 'org.litepal.android:core:1.5.1'
2.app/src/main下新建一个路径命名:assets,然后在该目录下创建xml文件litepal.xml,内容如下:
<?xml version="1.0" encoding="utf-8" ?>
<litepal>
<!--数据库名字.db-->
<dbname value = "BookStore"/>
<!--数据库版本,更新时改动版本-->
<version value = "1"/>
<!--这是自己新建的用于数据库存放表数据类型-->
<list>
<mapping class = "testsdcard.cai.maiyu.mdaima06_01.bean.Book"/>
</list>
</litepal>
无疑是指定数据库名字,版本,还有一个后面你自己创建的数据表类型(可以先不添加)
3.在manifest中去配置:
在<application
android:name="org.litepal.LitePalApplication"
.....
>
......
</application>
若是用自己的application也一样,记得在自己定义的application的onCreate方法中初始化:LitePal
。初始化(this);
4.创建数据表类:继承DataSupport
public class Book extends DataSupport{
private int id; //id
private String name; //书名
private String author; //作者
private int pages; //页数
private double price; //价格
// private String press; //出版社
// public String getPress() {
// return press;
// }
//
// public void setPress(String press) {
// this.press = press;
// }
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public int getPages() {
return pages;
}
public void setPages(int pages) {
this.pages = pages;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
5.Activity中使用:
public class TestLitePalActivity extends AppCompatActivity {
//创建数据库
@ViewInject(R.id.create_database)
private Button mBtnCreate;
//增加数据
@ViewInject(R.id.add)
private Button mBtnAdd;
//更新数据
@ViewInject(R.id.update)
private Button mBtnUpdate;
//删除数据
@ViewInject(R.id.delete)
private Button mBtnDelete;
//查询数据
@ViewInject(R.id.retrieve)
private Button mBtnRetrieve;
private static final String TAG = "TestLitePalActivity";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_database);
ViewUtils.inject(this);
}
//创建数据库
@OnClick(R.id.create_database)
public void createDatabase(View view){
//获取数据库
LitePal.getDatabase();
}
/**
* 添加数据
* @param view
*/
@OnClick(R.id.add)
public void addData(View view){
Book book = new Book();
book.setName("大话数据结构");
book.setAuthor("程杰");
book.setPages(516);
book.setPrice(43.00);
//book.setPress("Unknow");//增加出版社
book.save();
}
/**
* 删除数据
* @param view
*/
@OnClick(R.id.delete)
public void deleteData(View view){
DataSupport.deleteAll(Book.class , "price < ?" , "60");
}
/**
* 更新数据
* @param view
*/
@OnClick(R.id.update)
public void updateData(View view){
Book book = new Book();
book.setPrice(38.50);
book.updateAll("name = ? and author = ?" , "大话数据结构" , "程杰");
//更新数据为默认值
// book.setToDefault("pages");
// book.updateAll();
}
/**
* 查询数据
* @param view
*/
@OnClick(R.id.retrieve)
public void retrieveData(View view){
List<Book> books = DataSupport.findAll(Book.class);
for(Book book : books){
Log.d(TAG , "book name is " + book.getName());
Log.d(TAG , "book author is " + book.getAuthor());
Log.d(TAG , "book pages is " + book.getPages());
Log.d(TAG , "book price is " + book.getPrice());
}
//(2)添加限制:select--选定哪几列
//where--约束条件, order--结果排序 ,limit---结果的数量
//offset---查询结果的便宜了offset(1)代表查询表中的从第2条开始
// List<Book> books = DataSupport.select("name" , "author" ,"pages")
// .where("pages > ?" , "600")
// .order("pages")
// .limit(10)
// .offset(10)
// .find(Book.class);
//(3)用原生数据库语句查询
// Cursor cursor = DataSupport.findBySQL("select * from Book where pages > ?" +
// " and price < ?" ,"700" ,"60");
}
}
注意:
(1)版本更新,只需要在litepal.xml中改版本号
(2)现在可利用DataSupport.findXXX就可以了
(3)记得创建数据表类要继承DataSupport类
(4)查询还支持多种查询,原生SQL语句查询,
如有侵权,请联系删除!
如果对您有帮助,麻烦点个赞。您的鼓励就是我的动力!