【Android開發】【資料庫】LitePal 資料庫的使用
一,導包
dependencies {
......
// LitePal的包
compile 'org.litepal.android:core:1.3.1'
......
}
二,建立bean類
public class Person extends DataSupport { private int id; private String name; private int age; public Person(int id, String name, int age) { this.id = id; this.name = name; this.age = age; } 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 int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Person{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + '}'; } }
三,配置litepal.xml檔案
在assets資料夾下建立litepal.xml檔案。
<?xml version="1.0" encoding="utf-8"?> <litepal> <dbname value="demo"></dbname> <version value="1"></version> <list> <mapping class="com.example.administrator.litepaldemo.bean.Person"></mapping> </list> </litepal>
“dbname ” 標籤, 是資料庫的名稱,自定義。
“mapping” 標籤,填寫的是需要進行資料庫操作的bean類,要寫完整的類名。
如果修改bean類的資料結構,只需要修改此處的資料庫版本號即可。
四,配置Application類
讓自己的Application繼承自LitePalApplication;
如果無法實現可以不繼承,但是要在Application中新增:
//初始化LitePal資料庫
LitePalApplication.initialize(this);
五,Insert
1, 插入一條資料
Person person = new Person(4, "Cery", 18); person.save(); // 返回值:是否插入成功
- 同時插入多條
List<News> newsList;
...
DataSupport.saveAll(newsList);
六,Delete
1, 清空資料庫
DataSupport.deleteAll(News.class);
2,根據ID刪除某個一條
DataSupport.delete(News.class, 2);
3, 通過where語句來批量刪除資料
DataSupport.deleteAll(News.class, "title = ? and commentcount = ?", "今日iPhone6釋出", "0");
七,Update
1, 把news表中id為2的記錄的標題改成“今日iPhone6釋出”
ContentValues values = new ContentValues();
values.put("title", "今日iPhone6釋出");
DataSupport.update(News.class, values, 2);
2,把news表中標題為“今日iPhone6釋出”的所有新聞的標題改成“今日iPhone6 Plus釋出”
ContentValues values = new ContentValues();
values.put("title", "今日iPhone6 Plus釋出");
DataSupport.updateAll(News.class, values, "title = ?", "今日iPhone6釋出");
3,把news表中所有新聞的標題都改成“今日iPhone6釋出”
ContentValues values = new ContentValues();
values.put("title", "今日iPhone6 Plus釋出");
DataSupport.updateAll(News.class, values);
八,Search
//查詢第一個
News firstNews = DataSupport.findFirst(News.class);
//查詢最後一個
News lastNews = DataSupport.findLast(News.class);
//指定多個id來查詢
List<News> newsList = DataSupport.findAll(News.class, 1, 3, 5, 7);
//或者
long[] ids = new long[] { 1, 3, 5, 7 };
List<News> newsList = DataSupport.findAll(News.class, ids);
//查詢所有
List<News> allNews = DataSupport.findAll(News.class);
//條件查詢
List<News> newsList = DataSupport.where("commentcount > ?", "0").find(News.class);
//只要title和content這兩列資料的條件查詢
List<News> newsList = DataSupport.select("title", "content") .where("commentcount > ?", "0").find(News.class);
//倒敘
List<News> newsList = DataSupport .where("commentcount > ?", "0") .order("publishdate desc").find(News.class);
//只要前十條資料
List<News> newsList = DataSupport .where("commentcount > ?", "0").limit(10).find(News.class);
//從第五個往後的十條,不包括第五條
List<News> newsList = DataSupport.limit(10).offset(5).find(News.class);
查詢語句繁雜, 可以參考:http://blog.csdn.net/guolin_blog/article/details/40153833
九,Demo地址
https://github.com/baitutang1221/LitePalDemo
十,參考文章
http://blog.csdn.net/guolin_blog/article/details/38556989
http://blog.csdn.net/guolin_blog/article/details/39345833
http://blog.csdn.net/guolin_blog/article/details/40083685
http://blog.csdn.net/guolin_blog/article/details/40153833
http://blog.csdn.net/u012453607/article/details/51280290