標籤:des android style color io os 使用 ar java
SQLiteDatabase和ContentProvider為我們提供一下函數
query() //查詢insert() //插入delete() //刪除update() //更新//參數和傳回值我沒有寫
資料庫建庫升級等原則
private final class DatabaseHelper extends SQLiteOpenHelper { public DatabaseHelper(final Context context) { super(context, DB_NAME, null, DB_VERSION); } /** * 1-->2 add header table * 2-->3 update info * 3--> update info haha * */ public static final int DB_VERSION = 4; public static final String DB_NAME = "download"; /** * Creates database the first time we try to open it. */ @Override public void onCreate(final SQLiteDatabase db) { if (Constants.LOGVV) { Log.v(Constants.TAG, "populating new database"); } onUpgrade(db, 0, DB_VERSION); } /** * Updates the database format when a content provider is used * with a database that was created with a different format. * * Note: to support downgrades, creating a table should always drop it first if it already * exists. */ @Override public void onUpgrade(final SQLiteDatabase db, int oldV, final int newV) { for (int version = oldV + 1; version <= newV; version++) { upgradeTo(db, version); } } /** * Upgrade database from (version - 1) to version. */ private void upgradeTo(SQLiteDatabase db, int version) { switch (version) { case 1: createDownloadsTable(db); break; case 2: createHeadersTable(db); break; case 3: addColumn(db, DB_TABLE, Downloads.Impl.COLUMN_IS_PUBLIC_API, "INTEGER NOT NULL DEFAULT 0"); addColumn(db, DB_TABLE, Downloads.Impl.COLUMN_ALLOW_ROAMING, "INTEGER NOT NULL DEFAULT 0"); addColumn(db, DB_TABLE, Downloads.Impl.COLUMN_ALLOWED_NETWORK_TYPES, "INTEGER NOT NULL DEFAULT 0"); break; case 103: addColumn(db, DB_TABLE, Downloads.Impl.COLUMN_IS_VISIBLE_IN_DOWNLOADS_UI, "INTEGER NOT NULL DEFAULT 1"); makeCacheDownloadsInvisible(db); break; case 4: addColumn(db, DB_TABLE, Downloads.Impl.COLUMN_BYPASS_RECOMMENDED_SIZE_LIMIT, "INTEGER NOT NULL DEFAULT 0"); break; default: throw new IllegalStateException("Don‘t know how to upgrade to " + version); } }
以上代碼是摘自android 中的DownloadProvider的DatabaseHelper代碼。我在這裡主要是像推薦這種資料庫的建表,最初接觸這種建表方式是在以前閱讀DownloadManager的時候發現,發現android中這種設計真的是非常精妙。這種方式,方便資料庫的升級,在update資料庫和create資料庫的時候,可以共用建表,修改資料表的代碼,同時可以清晰看到資料庫的變化。
同時建議,在修改資料庫版本的時候,在版本號碼上面增加註釋,寫上資料庫升級的內容,方便自己以後看到資料庫的變化,以及其他人在看代碼時候,瞭解到資料庫的變化。
資料庫建表和資料存放區建議
一些簡單的設定檔,不建議存到資料庫,存到sharepreference中,方便存取,同時也提高訪問速度。
檔案,圖片等絕對不要存到資料庫,隱藏檔路徑到資料庫中即可。
一些很複雜的資料,建議直接轉成json存到資料庫即可。一些緩衝也可以這樣儲存。
其他要說的
資料庫操作時候,不要在主線程操作。這是耗時操作,容易造成ANR.
在進行資料庫中的資料顯示時候,建議配合CursorLoader使用,這是android提供的非同步資料載入,同時會在資料變化時候,自動重新重新整理資料。
Android中使用資料庫