Android資料存放區——開源LitePal方法操作資料庫

來源:互聯網
上載者:User

標籤: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方法操作資料庫

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.