Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android中文API(139) —— SQLiteOpenHelper

Android中文API(139) —— SQLiteOpenHelper

編輯:Android開發實例

前言

  本章內容android.database.sqlite.SQLiteOpenHelper章節,版本為Android 4.0 r1,翻譯來自:"StreamH"。

 

 

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      新版本數據庫

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved