標籤:android資料 配置 default pil efault str 列表 private date
一 配置litepal
1.在app/build.gradle中的dependencies閉包中添加依賴:
compile ‘org.litepal.android:core:1.4.1‘
2.在app/src/mian目錄裡 new一個Directory,命名為assets目錄,在目錄中建立一個file,命名litepal.xml。並進行編輯:
1 <?xml version="1.0" encoding="utf-8" ?>2 <litepal>3 <dbname value="BookStore"></dbname>4 5 <version value="1"></version>6 <list>7 8 </list>9 </litepal>
dbname用於指定資料庫名,version指定版本號碼。
3.配置LitePalApplication,修改AndroidMainActivity中的代碼,在<application>中添加:
android:name="org.litepal.LitePalApplication"
二 建立和升級資料庫
在litepal中採用的是對象關係映射模型,可以使用物件導向的思想來編寫資料庫,即把表映射成了對應的類,表中的列就是類中的資料類型,再給各種資料寫上對應的get和set方法。
(1)建立資料庫:
如先建立一個Book表,則建立book類。如下:
1 public class Book { 2 3 private int id; 4 private String author; 5 private double price; 6 private int pages; 7 private String name; 8 9 public int getId() {10 return id;11 }12 13 public void setId(int id) {14 this.id = id;15 }16 17 public String getAuthor() {18 return author;19 }20 21 public void setAuthor(String author) {22 this.author = author;23 }24 25 public double getPrice() {26 return price;27 }28 29 public void setPrice(double price) {30 this.price = price;31 }32 33 public int getPages() {34 return pages;35 }36 37 public void setPages(int pages) {38 this.pages = pages;39 }40 41 public String getName() {42 return name;43 }44 45 public void setName(String name) {46 this.name = name;47 }48 }
在Book類中我們定義了類中對應表中的各列的欄位。這就是映射。
將Book類添加到映射模型列表中,修改litepal.xml中的代碼如下:注意一定要寫完整的類名。
<list> <mapping class="com.example.litepaltest.Book"></mapping> </list>
現在只要進行任意一次資料庫操作,資料庫就會被建立,book表也會被建立,所以使用Litepal.getDatabase()方法來進行最簡單的資料庫操作,以達到建立資料庫和表的目的。
(2)升級資料庫:
之前使用SQliteOpenHelper來進行對資料庫操作時,雖然也可以升級,但是每次升級會先刪除之前存在的表,如果表中存有資料就會造成不必要的損失。而使用litepal則不會在更新時候刪除之前存在的表和資料。
如我們在book表中新加一個列,只要在book類中新加入一個欄位和相應的方法即可。代碼如下:
1 private String press;2 3 public String getPress() {4 return press;5 }6 7 public void setPress(String press) {8 this.press = press;9 }
同時還可以加入一個新的表Category表來分類書籍。建立一個Category類,同樣欄位對應相應的行,如下:
1 public class Category { 2 private int id; 3 private String categoryName; 4 private int categoryCode; 5 6 public int getId() { 7 return id; 8 } 9 10 public void setId(int id) {11 this.id = id;12 }13 14 public void setCategoryName(String categoryName) {15 this.categoryName = categoryName;16 }17 18 public void setCategoryCode(int categoryCode) {19 this.categoryCode = categoryCode;20 }21 }
這時,只需要在litepal.xml中修改相應的版本號碼,並加入新添加的表的類名就可。(版本號碼增加為2)
1 <litepal>2 <dbname value="BookStore"></dbname>3 4 <version value="2"></version>5 <list>6 <mapping class="com.example.litepaltest.Book"></mapping>7 <mapping class="com.example.litepaltest.Category"></mapping>8 </list>9 </litepal>
三 添加資料
添加資料很簡單,只需要將要添加的表繼承自LitePalSupport類(原繼承DataSupport類,現在已經棄用了)。
public class Book extends LitePalSupport
然後在MainActivity中添加相關要添加的資料,最後用save()進行儲存即可。如下:
1 Button addData = (Button) findViewById(R.id.add_data); 2 addData.setOnClickListener(new View.OnClickListener() { 3 @Override 4 public void onClick(View view) { 5 Book book = new Book(); 6 book.setName("the da wei"); 7 book.setAuthor("mask"); 8 book.setPages(33); 9 book.setPrice(19.33);10 book.setPress("Unkonw");11 book.save();12 }13 });
如上,先建立出一個Book的執行個體,然後調用Book類中的設定好的set方法設定資料,然後用save()方法來進行儲存資料。
四 更新資料
我們修改表中一本書的價格和出版社,其中有限制條件作者和書名。代碼如下:
1 Button updateData = (Button) findViewById(R.id.update_data); 2 updateData.setOnClickListener(new View.OnClickListener() { 3 @Override 4 public void onClick(View view) { 5 Book book = new Book(); 6 book.setPrice(14.99); 7 book.setPress("Auchor"); 8 book.updateAll("name=? and author=?", "the a", "maskd"); 9 }10 });
先將表執行個體化,然後通過set修改要更新的資料,通過updateAll()方法來更新,其中第一個參數是限制的條件,之後是限制條件具體的參數。如果不指定條件陳述式的話,表示所有的資料都更新。
如果想將列的內容更新為預設值的話,使用如下代碼:就可以將目標列中的值設為預設值了。
book.setToDefault("pages");
五 刪除資料
刪除資料假設還是繼承自datasupport類:代碼如下
1 Button deleteButton = (Button) findViewById(R.id.delete_data);2 deleteButton.setOnClickListener(new View.OnClickListener() {3 @Override4 public void onClick(View view) {6 DataSupport.deleteAll(Book.class,"price<?","12.00");7 }8 });
其中刪除刪除deleteAll方法第一個參數是對應的表,第二個和第三個參數相當於SQL語句中的where和對應的數值。
Android資料存放區——開源LitePal方法操作資料庫