Android中文API(139) —— SQLiteOpenHelper

來源:互聯網
上載者:User

 

前言

  本章內容android.database.sqlite.SQLiteOpenHelper章節,版本為Android 4.0 r1,翻譯來自:"StreamH",歡迎訪問他的部落格:"http://blog.csdn.net/qs_csu",再次感謝"StreamH" !期待你一起參與翻譯Android的相關資料,聯絡我over140@gmail.com。

 

聲明

  歡迎轉載,但請保留文章原始出處:) 

    部落格園:http://www.cnblogs.com/

    Android中文翻譯組:http://androidbox.sinaapp.com/

 

 

SQLiteOpenHelper

譯者署名:StreamH

譯者連結:http://blog.csdn.net/qs_csu

版本:Android 4.0 r1

 

結構

繼承關係

public abstract class SQLiteOpenHelper extends Object

      

java.lang.Object

android.database.sqlite.SQLiteOpenHelper

 

類概述

一個協助類,協助建立資料庫和資料庫版本管理。

使用必須建立一個子類來實現其onCreate(SQLiteDatabase), onUpgrade(SQLiteDatabase, int, int)方法,同時任意實現onOpen(SQLiteDatabase)方法,同時開啟資料庫操作必須保證資料庫存在,如果不存在則建立它,並且對其必要的升級,維護其保持一個最佳的狀態。

使用本類提供內容開始建立資料庫是非常容易的,首先必須對資料庫進行升級,以避免在資料庫啟動後長期使用而阻塞資料。

舉個例子,在NotePad的例子程式中參看類NotePadProvider,在SDK的目錄samples/下面。

注意:這個類假定升級的版本號碼是單調遞增的。

 

建構函式

       public SQLiteOpenHelper (Context context, String name, SQLiteDatabase.CursorFactory factory, int version)

       建立一個協助對象,開啟或者管理資料庫。該方法通常快速返回。資料庫並沒有實際建立或開啟,直到getWritableDatabase() 或getReadableDatabase()其中一個被調用。

              參數

                     context 用來開啟或建立資料庫

                     name    資料庫檔案名,對一個在記憶體中的資料庫而言是null

                     factory    用來建立對象遊標,或者預設為null

                     version    資料庫的序號(從1開始);如果資料庫是舊的,onUpgrade(SQLiteDataBase,int,int)會被調用去升級資料庫;如果資料庫是新的,onDowngrade(SQLiteDatabase,int,int)會被調用去降級資料庫。

 

       public SQLiteOpenHelper (Context context, String name, SQLiteDatabase.CursorFactory factory, int version, DatabaseErrorHandler errorHandler)

       建立一個協助對象,開啟或者管理資料庫。該方法通常快速返回。資料庫並沒有實際建立或開啟,直到getWritableDatabase() 或getReadableDatabase()其中一個被調用。

參數

context 用來開啟或建立資料庫

                     name   資料庫檔案名,對一個在記憶體中的資料庫而言是null

                     factory    用來建立對象遊標,或者預設為null

                     version    資料庫的序號(從1開始);如果資料庫是舊的,onUpgrade(SQLiteDataBase,int,int)會被調用去升級資料庫;如果資料庫是新的,onDowngrade(SQLiteDatabase,int,int)會被調用去降級資料庫。

                    errorHandler 當sqlite報告一個資料庫毀壞錯誤時,DatabaseErrorHandler會被使用。

 

公用方法

       public synchronized void close ()

       關閉任何開啟的資料庫物件。

 

       public String getDatabaseName ()

       返回正被開啟的通過建構函式傳遞進來的SQLite資料庫的名字。

 

       public synchronized SQLiteDatabase getReadableDatabase ()

建立或開啟一個資料庫。這和getWritableDatabase()返回的對象是同一個,除非一些因素要求資料庫只能以read-only的方式被開啟,比如磁碟滿了。在這種情況下,一個唯讀資料庫物件將被返回。如果這個問題被修改掉,將來調用getWritableDatabase()就可能成功,而這時read-only資料庫物件將被關閉,並且讀寫對象將被返回。

像getWritableDatabase(),這個方法需要很長時間才返回,所以你不該在應用程式的主線程中調用它,包括方法ContentProvider.onCreate()。

傳回值

       一個有效資料庫物件,直到getWritableDatabase() or close() 被調用

異常

       SQLiteException    如果資料庫不能被開啟

 

public synchronized SQLiteDatabase getWritableDatabase ()

建立或開啟一個資料庫,用於讀寫。該方法第一次被調用的時候,資料庫被開啟,並且onCreate(SQLiteDatabase),onUpgrade(SQLiteDatabase,int,int) 或onOpen(SQLiteDatabase)將被調用。

一旦成功開啟,資料庫將被緩衝,所以需要寫入資料的時候你可以調用這個方法。(當你不再需要這個資料庫的時候,確保調用close())。像不健康的許可或磁碟已滿等錯誤都可能導致該方法是不,但是如果該問題被解決,將來的嘗試可能會成功。

資料庫升級可能會話費很長的時間,所以你不該在應用程式的主線程中調用它,包括方法ContentProvider.onCreate()。

傳回值

              一個有效讀寫資料庫物件直到close()被調用。

       異常

              SQLiteException    如果資料庫不能被開啟用於寫入

      

       public abstract void onCreate (SQLiteDatabase db)

       當第一次建立資料庫時調用。表格的建立和初始化表格的個數在這裡完成。

              參數

                     db    資料庫

 

       public void onDowngrade (SQLiteDatabase db, int oldVersion, int newVersion)

       當資料庫需要降低版本時候調用。這個方法跟onUpgrade()很相似,但是只要當然版本比被請求的更新,它就會被調用。儘管如此,這個方法不是抽象的,所以它並不強制使用者去實現它。如果不被重寫,預設的實現將會拒絕降級並且拋出一個SQLiteException。

              參數

                     db                         資料庫

oldVersionThe       舊版本資料庫

newVersionThe      新版本資料庫

 

       public void onOpen (SQLiteDatabase db)

       當資料庫開啟時調用。這個實現會在升級資料庫之前會檢查isReadOnly()。

        參數

                     db                         資料庫

 

       public abstract void onUpgrade (SQLiteDatabase db, int oldVersion, int newVersion)

當資料庫升級時調用。這個實現需要使用該方法去丟棄表格,增加表格,或者做一些其它事情,它需要升級到新的計劃中的版本。

SQLite ALTER TABLE文檔可以在這找到。如果你添加新的列,你可以使用ALTER TABLE 去把它們插入到活著的表格中。如果你重新命名或移動列,你可以使用ALTER TABLE去重新命名這些舊的表格,然後建立新的表格,之後把舊錶格的資料放到新的表格上。

              參數

                     db                         資料庫

oldVersionThe       舊版本資料庫

newVersionThe      新版本資料庫

 

補充

       文章精選

              android SQLiteOpenHelper使用樣本

相關文章

聯繫我們

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