Android數據存儲——開源LitePal方法操作數據庫


一 配置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             @Override
4             public void onClick(View view) {6                 DataSupport.deleteAll(Book.class,"price<?","12.00");
7             }
8         });

其中刪除刪除deleteAll方法第一個參數是對應的表,第二個和第三個參數相當於SQL語句中的where和對應的數值。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM