啦啦爱在线观看免费视频6_花季传媒3.072_美女跪下吃男人j8免费视频_别揉我胸嗯啊

十三年專注于網站建設與互聯網應用開發,低調、有情懷的網絡應用服務商!
南昌百恒科技微信公眾號 掃一掃關注
tel-icon全國服務熱線:400-680-9298,0791-88117053
掃一掃關注百恒科技微信公眾號

Android開發中如何定義Schema

百恒網絡 2018-09-19 14:52:01 3989
? ? ? ?安卓開發人員么都知道,savedInstanceState無法滿足應用長久化保存數據的需求。Android為此提供了長期存儲地:手機或平板設備閃存上的本地文件系統。

? ? ? ?Android設備上的應用都有一個沙盒目錄。將文件保存在沙盒中,可阻止其他應用甚至是設備用戶的訪問。

? ? ? ?應用沙盒目錄是/data/data/[your package name]的子目錄。例如,Criminalintent應用的沙盒目錄是/data/data/com.bignerdranch.android.criminalintent。

? ? ? ?需要保存大量數據時,大多數應用都不會使用類似txt這樣的普通文件。原因很簡單:假設將crime記錄寫入了這樣的文件,在僅需要修改crime標題時,就得首先讀取整個文件的內容,完成修改后再全部保存。數據量大的話,這將非常耗時。

? ? ? ?那么這該怎么辦呢?這時候就需要用到SQLite了。SQLite是類似于MySQL和Postgresql的開源關系型數據庫。不同于其他數據庫的是,SQLite使用單個文件存儲數據,使用SQLite庫讀取數據。Android標準庫包含SQLite庫以及配套的一些Java輔助類。

? ? ? ?創建數據庫前,首先要清楚存儲什么樣的數據。CriminalIntent應用要保存的是一條條crime記錄,這需要定義如下圖所示的crimes數據表。

Android開發中如何定義Schema
crimes數據表

? ? ? ?定義Schema的方式眾多,如何選擇往往因人而異。處理類似的任務,開發人員都有個共同的目標:“不要重復造輪子。”實際上,這也是人人都應遵守的編程準則:多花時間思考復用代碼的編寫和調用,避免在應用中到處使用重復代碼。

? ? ? ?基于上述準則,我們可以使用能統一定義模型層對象(如Crime)的ORM(對象關系映射)工具。不過,對于CriminalIntent應用,南昌APP開發公司建議直接在Java代碼中定義描述表名和數據字段的數據庫schema。

? ? ? ?首先,我們來創建定義schema的Java類。創建時,命名類為CrimeDbSchema,同時在新建類對話框中輸入包名database.CrimeDbSchema。這樣,就可以將CrimeDbSchema.java文件放入專門的database包中,實現數據庫操作相關代碼的組織和歸類。

? ? ? 在CrimeDbSchema類中,再定義一個描述數據表的CrimeTable內部類,如下代碼所示。

? ? ? ?定義CrimeTable內部類(CrimeDbSchema.java)
? ? ? ?public class CrimeDbSchema {
? ? ? ?public static final class CrimeTable {
? ? ? ?public static final String NAME = "crimes";
? ? ? ?}
? ? ? ?}?

? ? ? ?CrimeTable內部類唯一的用途就是定義描述數據表元素的String常量。首先要定義的是數據庫表名(CrimeTable.NAME)。

? ? ? ?接下來定義數據表字段
? ? ? ?定義數據表字段(CrimeDbSchema.java)
? ? ? ?public class CrimeDbSchema {
? ? ? ?public static final class CrimeTable {
? ? ? ?public static final String NAME = "crimes";
? ? ? ?public static final class Cols {
? ? ? ?public static final String UUID = "uuid";
? ? ? ?public static final String TITLE = "title";
? ? ? ?public static final String DATE = "date";
? ? ? ?public static final String SOLVED = "solved";
? ? ? ?}
? ? ? ?}
? ? ? ?}?

? ? ? ?有了這些數據表元素,就可以在Java代碼中安全地引用了。例如,CrimeTable.Cols.TITLE就是指crime記錄的title字段。此外,這種定義方式還給修改字段名稱或新增表元素帶來了方便。
400-680-9298,0791-88117053
掃一掃關注百恒網絡微信公眾號

歡迎您的光顧,我們將竭誠為您服務×

售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售后服務 售后服務
 
備案專線 備案專線
 
售后服務 售后服務
 
×