Android中使用資料庫

來源:互聯網
上載者:User

標籤: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中使用資料庫

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.