数据存储之 SQLite 数据库操作(一)
生活随笔
收集整理的這篇文章主要介紹了
数据存储之 SQLite 数据库操作(一)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這一講我們來講解一下數據庫的存儲方式 ,SQLite數據庫屬于文本型的數據庫,它是以文本的形式來保存的。
??? Android提供了對 SQLite 數據庫的完全支持,應用程序中的任何類都可以通過名稱來訪問任何的數據庫,但是應用程序之外的就不能訪問。建議創建一個新的數據庫的方式就是創建一個子類繼承 SQLiteOpenHelper 然后重寫它的 onCreate() 方法,這樣你就可以在數據庫中執行 SQLite的語法命令來創建表了 查看API文檔中?SQLiteOpenHelper?類的介紹
??? 這是一個幫助類,作用是管理數據庫的創建和版本的管理,你可以創建一個子類來實現 onCreate(SQLiteDatabase), onUpgrade(SQLiteDatabase, int, int) 方法, onOpen(SQLiteDatabase)可以選擇是否要實現。這個類負責在數據庫存在的情況下,打開數據庫,如果它不存在則會創建數據庫,并且在必要的時候更新它。事務也會被使用到,這樣才能確保數據庫總是在合理的狀態。 ??????? 查看它的方法列表: ??????? getReadableDatabase() 可以通過這個方法進行數據庫的創建和打開
package?com.android.sqlitedemo.db;?? ?? import?android.content.Context;?? import?android.database.DatabaseErrorHandler;?? import?android.database.sqlite.SQLiteDatabase;?? import?android.database.sqlite.SQLiteOpenHelper;?? import?android.database.sqlite.SQLiteDatabase.CursorFactory;?? ?? public?class?DBOpenHelper?extends?SQLiteOpenHelper?{?? ?? ????/**? ?????*?查看SQLiteOpenHelper?api文檔的,它的構造方法? ?????*?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)??方法來?回退數據庫? ?????*?【注意】?:?我們聲明完這個構造方法之后,包括初始化它的名稱?和?版本之后,實際上它還是沒有馬上被創建起來的。? ?????*/?? ????private?static?String?name?=?"mydb.db";?//表示數據庫的名稱?? ????//private?static?int?version?=?1;?//表示數據庫的版本號?? ????private?static?int?version?=?2;?//更新數據庫的版本號,此時會執行?onUpgrade()方法?? ????public?DBOpenHelper(Context?context)?{?? ????????super(context,?name,?null,?version);?? ????????//?TODO?Auto-generated?constructor?stub?? ????}?? ?? ????//當數據庫創建的時候,是第一次被執行,完成對數據庫的表的創建?? ????@Override?? ????public?void?onCreate(SQLiteDatabase?db)?{?? ????????//?TODO?Auto-generated?method?stub?? ????????//SQLite?數據創建支持的數據類型:?整型數據,字符串類型,日期類型,二進制的數據類型?? ????????//數據庫這邊有一個特點,就是SQLite數據庫中文本類型沒有過多的約束,也就是可以把布爾類型的數據存儲到文本類型中,這樣也是可以的?? ????????String?sql?=?"create?table?person(id?integer?primary?key?autoincrement,name?varchar(64),address?varchar(64))";?? ????????db.execSQL(sql);?//完成數據庫的創建??? ????}?? ?? ????/**? ?????*?onUpgrade()?方法是在什么時候被執行呢?? ?????*?查看API文檔中?onUpgrade()介紹? ?????*???當數據庫需要升級時調用這個方法[在開發過程中涉及到數據庫的設計存在缺陷的時候進行升級,不會損壞原來的數據],這種實現方式會使用方法來減少表,或者增加表,或者做版本更新的需求。? ?????*?在這里就可以執行?SQLite?Alter語句了,你可以使用?ALTER?TABLE?來增加新的列插入到一張表中,你可以使用?ALTER?TABLE?語句來重命名列或者移除列,或者重命名舊的表。? ?????*?你也可以創建新的表然后將舊表的內容填充到新表中。? ?????*???此方法會將事務之內的事件一起執行,如果有異常拋出,任何改變都會自動回滾操作。? ?????*???參數:? ?????*?????db?:?數據庫? ?????*?????oldVersion?:?舊版本數據庫? ?????*?????newVersion?:?新版本數據庫? ?????*?【注意】:這里的刪除等操作必須要保證新的版本必須要比舊版本的版本號要大才行。[即?Version?2.0?>?Version?1.0?]?所以這邊我們不需要對其進行操作。? ?????*/?? ????@Override?? ????public?void?onUpgrade(SQLiteDatabase?db,?int?oldVersion,?int?newVersion)?{?? ????????//?TODO?Auto-generated?method?stub?? ????????String?sql?=?"alter?table?person?add?sex?varchar(8)";?? ????????db.execSQL(sql);?? ????}?? ?? }?? 2) MainActivity.java 主程序的實現 package?com.android.sqlitedemo;?? ?? import?com.android.sqlitedemo.db.DBOpenHelper;?? ?? import?android.os.Bundle;?? import?android.app.Activity;?? import?android.content.Context;?? import?android.view.Menu;?? import?android.view.View;?? import?android.view.View.OnClickListener;?? import?android.widget.Button;?? ?? public?class?MainActivity?extends?Activity?{?? ?? ????private?Button?button;?? ?? ????@Override?? ????protected?void?onCreate(Bundle?savedInstanceState)?{?? ????????super.onCreate(savedInstanceState);?? ????????setContentView(R.layout.activity_main);?? ????????initComponent();?? ????????button.setOnClickListener(new?OnClickListener()?{?? ?? ????????????@Override?? ????????????public?void?onClick(View?v)?{?? ????????????????//?TODO?Auto-generated?method?stub?? ????????????????DBOpenHelper?helper?=?new?DBOpenHelper(MainActivity.this);?? ????????????????//?調用?getWritableDatabase()或者?getReadableDatabase()其中一個方法將數據庫建立?? ????????????????helper.getWritableDatabase();?? ????????????}?? ????????});?? ????}?? ?? ????@Override?? ????public?boolean?onCreateOptionsMenu(Menu?menu)?{?? ????????//?Inflate?the?menu;?this?adds?items?to?the?action?bar?if?it?is?present.?? ????????getMenuInflater().inflate(R.menu.main,?menu);?? ????????return?true;?? ????}?? ?? ????private?void?initComponent()?{?? ????????button?=?(Button)?findViewById(R.id.button1);?? ????}?? ?? }??
1. SQLite 數據庫介紹
查看 Android API文檔中?SQLite?的介紹??? Android提供了對 SQLite 數據庫的完全支持,應用程序中的任何類都可以通過名稱來訪問任何的數據庫,但是應用程序之外的就不能訪問。建議創建一個新的數據庫的方式就是創建一個子類繼承 SQLiteOpenHelper 然后重寫它的 onCreate() 方法,這樣你就可以在數據庫中執行 SQLite的語法命令來創建表了 查看API文檔中?SQLiteOpenHelper?類的介紹
??? 這是一個幫助類,作用是管理數據庫的創建和版本的管理,你可以創建一個子類來實現 onCreate(SQLiteDatabase), onUpgrade(SQLiteDatabase, int, int) 方法, onOpen(SQLiteDatabase)可以選擇是否要實現。這個類負責在數據庫存在的情況下,打開數據庫,如果它不存在則會創建數據庫,并且在必要的時候更新它。事務也會被使用到,這樣才能確保數據庫總是在合理的狀態。 ??????? 查看它的方法列表: ??????? getReadableDatabase() 可以通過這個方法進行數據庫的創建和打開
2. 程序實現
1) DBOpenHelper.java 用來更新或者創建數據庫使用
[java]?view plaincopy
[java]?view plaincopy
3. 執行結果
1). 當數據庫版本為 1 (version = 1)的時候數據庫內容如下圖所示
2). 當數據庫版本為 2 (version = 2)的時候數據庫進行了更新操作,執行了 onUpgrade() 方法,更新后的內容增加了一列,如下圖所示
原文地址:?http://blog.csdn.net/ahuier/article/details/10417777
總結
以上是生活随笔為你收集整理的数据存储之 SQLite 数据库操作(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android SQLite Datab
- 下一篇: 数据存储之 SQLite 数据库操作(二