編輯: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 新版本數據庫
Android作為一個偉大的系統,自然提供了設置默認打開程序的實現.在這篇文章中,我會介紹如何在Android系統中設置默認的程序. 在設置默認程序之前,無非有兩
Android提供了許多方法來控制播放的音頻/視頻文件和流。其中該方法是通過一類稱為MediaPlayer。Android是提供MediaPlayer類訪問內置的媒體播放
本文實例講述了Android實現模仿UCweb菜單效果的方法。分享給大家供大家參考。具體如下: UCWeb的菜單看起來不錯,自己模仿做一個,思路實現如下: 1、保
JSON代表JavaScript對象符號。它是一個獨立的數據交換格式,是XML的最佳替代品。本章介紹了如何解析JSON文件,並從中提取所需的信息。Android提供了四個