directory search
android Manifest Manifest.permission Manifest.permission_group android.accessibilityservice AccessibilityService android.accounts Account android.app NotificationManager android.bluetooth BluetoothAdapter BluetoothClass BluetoothClass.Device BluetoothClass.Device.Major BluetoothClass.Service BluetoothDevice BluetoothServerSocket BluetoothSocket android.content SharedPreferences android.database.sqlite SQLiteCursorDriver SQLiteOpenHelper android.graphics Bitmap android.location LocationListener Geocoder GpsStatus GpsStatus.Listener GpsStatus.NmeaListener GpsSatellite android.media AudioFormat AsyncPlayer AudioRecord AudioRecord.OnRecordPositionUpdateListener ThumbnailUtils AudioManager android.net TrafficStats MailTo LocalSocket android.os AsyncTask AsyncTask.Status CountDownTimer Message MessageQueue HandlerThread android.text Html android.util JsonWriter android.view ContextMenu ContextMenu.ContextMenuInfo Display ViewManager View ViewStub ViewTreeObserver ViewParent WindowManager GestureDetector Gravity MenuInflater ScaleGestureDetector SoundEffectConstants android.view.inputmethod InputConnection InputMethod InputMethodSession BaseInputConnection InputMethodManager android.widget AbsListView AbsListView.LayoutParams AbsListView.OnScrollListener AbsListView.RecyclerListener AbsoluteLayout AbsoluteLayout.LayoutParams AbsSeekBar AbsSpinner AdapterView AdapterView.AdapterContextMenuInfo AdapterView.OnItemLongClickListener AdapterView.OnItemSelectedListener AdapterView.OnItemClickListener AnalogClock BaseAdapter BaseExpandableListAdapter Button CheckBox CheckedTextView Checkable Chronometer Chronometer.OnChronometerTickListener CompoundButton CompoundButton.OnCheckedChangeListener CursorAdapter CursorTreeAdapter DatePicker DatePicker.OnDateChangedListener DialerFilter DigitalClock EditText Filter Filter.FilterListener Filter.FilterResults ExpandableListAdapter ExpandableListView.OnChildClickListener ExpandableListView.OnGroupClickListener ExpandableListView.OnGroupCollapseListener ExpandableListView.OnGroupExpandListener Filterable Gallery Gallery.LayoutParams GridView GridLayout GridLayout.Alignment RadioGroup ImageView ImageView.ScaleType HorizontalScrollView ImageButton ImageSwitcher FilterQueryProvider ListAdapter ListView MediaController MultiAutoCompleteTextView MultiAutoCompleteTextView.CommaTokenizer MultiAutoCompleteTextView.Tokenizer QuickContactBadge RadioButton RatingBar RatingBar.OnRatingBarChangeListener RelativeLayout RemoteViews ResourceCursorAdapter ResourceCursorTreeAdapter Scroller ScrollView SearchView SearchView.OnCloseListener SearchView.OnQueryTextListener SearchView.OnSuggestionListener SeekBar SeekBar.OnSeekBarChangeListener SimpleAdapter SimpleAdapter.ViewBinder SimpleCursorAdapter SimpleCursorAdapter.CursorToStringConverter SimpleCursorAdapter.ViewBinder SimpleCursorTreeAdapter SimpleCursorTreeAdapter.ViewBinder SimpleExpandableListAdapter SlidingDrawer SlidingDrawer.OnDrawerCloseListener SlidingDrawer.OnDrawerOpenListener SlidingDrawer.OnDrawerScrollListener Spinner SpinnerAdapter WrapperListAdapter TabHost TabHost.TabSpec TextView TimePicker TimePicker.OnTimeChangedListener Toast TableLayout TableLayout.LayoutParams TableRow TableRow.LayoutParams TabWidget TextSwitcher ToggleButton TwoLineListItem VideoView ViewAnimator ViewFlipper ViewSwitcher ViewSwitcher.ViewFactory ZoomButtonsController ZoomButtonsController.OnZoomListener ZoomButton ZoomControls dalvik.system DexFile
characters


SQLiteOpenHelper

版本: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(SQLiteDataBaseintint)会被调用去升级数据库;如果数据库是新的,onDowngrade(SQLiteDatabaseintint)会被调用去降级数据库。

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

创建一个帮助对象,打开或者管理数据库。该方法通常快速返回。数据库并没有实际创建或打开,直到getWritableDatabase() getReadableDatabase()其中一个被调用。

参数

context 用来打开或创建数据库

name 数据库文件名,对一个在内存中的数据库而言是null

factory 用来创建对象游标,或者默认为null

version 数据库的序号(1开始);如果数据库是旧的,onUpgrade(SQLiteDataBaseintint)会被调用去升级数据库;如果数据库是新的,onDowngrade(SQLiteDatabaseintint)会被调用去降级数据库。

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(SQLiteDatabaseintint) 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使用示例


Previous article: Next article: