Android:日常學習筆記(10)———使用LitePal操作數據庫
引入LitePal
什么是LitePal
LitePal是一款開源的Android數據庫框架,采用了對象關系映射(ORM)的模式,將平時開發時最常用的一些數據庫功能進行了封裝,使得開發者不用編寫一行SQL語句就可以完成各種建表、増刪改查的操作。並且LitePal很“輕”,jar包大小不到100k,而且近乎零配置,這一點和Hibernate這類的框架有很大區別。目前LitePal的源碼已經托管到了GitHub上。
關於對象關系映射:
我們使用的對象語言是面向對象語言,而使用的數據庫則是關系型數據庫,將面向對象的語言與面向關系的數據庫之間建立一種映射關系,這就是對象關系映射。我們可以不用編寫任何SQL語句,而用面向對象的設計思想操作數據庫。
配置LitePal
1.添加依賴
2.編寫XML配置文件
<?xml version="1.0" encoding="utf-8" ?> <litepal> <dbname value="BookStore"></dbname> //數據庫名稱 <version value="1"></version> //數據庫版本 <list></list> </litepal>
說明:
<dbname>是數據庫的名字 <version>是數據庫的版本號 <list>是數據庫的映射模型(數據庫表) <mapping>是數據庫的映射模型的地址(數據庫表結構)
3.配置LitePalApplication
<application android:name="org.litepad.LitePalApplication" .....> .... </application>
創建和升級數據庫
創建數據庫及Book表
1.定義JavaBean
public class Book { private int id; private String author; private double price; private int pages; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } ..... }
2.將Book類添加到映射模型列表中
<?xml version="1.0" encoding="utf-8" ?> <litepal> <dbname value="BookStore"></dbname> <version value="1"></version> <list> <mapping class="com.example.zy.dealhelper.database.Book"></mapping> </list> </litepal>
3.調用命令創建數據庫
public void onClick(View v) { Connector.getDatabase(); }
4.litePal會自動創建數據庫和Mapping對象類的數據表
升級數據庫
LitePal升級數據庫非常簡單,你完全不需要思考任何的邏輯,只需要修改你想改的任何內容,然后將版本后遞增即可。比如我們要往Book表中添加一列,如press(出版社),直接在JavaBean中添加即可。
public class Book { private int id; private String author; private double price; private int pages; private String name; private String press;//出版社 public String getPress() { return press; } public void setPress(String press) { this.press = press; } ...... }
或者想多創建一張表,你也只需要再寫一個JavaBean類就好。
public class Catagory { private int id; private String categoryName; public int getId() { return id; } public void setId(int id) { this.id = id; } ...... }
別忘了最后再LitePal的配置文件中,加入mapping和更新版本號
增刪改查
添加數據
使用LitePal添加數據異常簡單:
我們只需要創建出模型類並將數據設置好,調用save()方法即可。
前提:
要執行CURD操作的數據表必須繼承自DataSupport
實例:
public void onClick(View v) { Book book =new Book(); book.setName("The Da Vinci Code"); book.setAuthor("Dan Brown"); book.setPages(454); book.setPrice(16.96); book.setPress("Unknow"); book.save(); //只需要調用繼承方法,save()即可 }
更新數據
對已存儲對象重新設值:
條件匹配:
切記如果不指定條件會更新所有記錄的!
刪除數據
DataSupport.deleteAll(Book.class,"price < ?","15")
查詢數據
簡單查詢:
//查找某表的所有數據 List<Book> books =DataSupport.findAll(Book.class); //第一條數據 Book first =DataSupport.findFirst(Book.class); //最后一條數據 Book last =DataSupport.findLast(Book.class);
連綴查詢:
關於ADB啟動錯誤的解決方案:
1、CMD命令窗口輸入:adb nodaemon server 。然后就會提示你哪個端口被占用了。
2、輸入netstat -ano | findstr "5037" 。然后會彈出提示告訴你哪些進程占用了該端口,記住非0地址的后面的數字
3、打開任務管理器,點擊“進程“,“查看”-“選擇列”,勾選PID
4、查找第2步中看到的數字PID,然后結束相關進程,即可