SQLite數據庫之SQLiteOpenHelper與SQLiteDatabase
Email:chentravelling@163.com
在前面一章節:《[SQLite數據庫的創建和操作、SQLite數據庫可視化](http://blog.csdn.net/chentravelling/article/details/50339433)》中,我已經使用過SQLiteOpenHelper類和SQLiteDatabase類,也正是因為這兩個類,使得android系統的數據庫服務非常方便。本文重在記錄這兩個類的區別以及個人理解。
SQLiteOpenHelper類是SQLiteDatabase類的一個幫助類,什么叫幫助類?就是通過SQLiteOpenHelper實現對數據庫的創建、更新功能,而由SQLiteDatabase實現對數據的直接操作:增刪改查。
環境:
IDE:Android Studio
JDK:1.8
系統:win7 64位
1、SQLiteOpenHelper類的使用:
(1)數據庫創建:新建AddressDAO類,繼承SQLiteOpenHelper,重寫構造函數即可:
創建address_db數據庫
~~~
public class AddressDAO extends SQLiteOpenHelper{
public AddressDAO(Context context)
{
super(context,"address_db",null,1);
}
}
(2)創建表:重寫onCreate()方法即可:創建people表
~~~
~~~
</pre><pre name="code" class="java">@Override
public void onCreate(SQLiteDatabase db)
{
Log.e("onCreate", "create");
String sql = "CREATE TABLE IF NOT EXISTS people(id integer primary key autoincrement,name text,phone text,workplace text,gender integer);";
db.execSQL(sql);
}
~~~
String sql = 。。。這個完全按照標準的SQL語句寫即可。當然如果使用SQLiteDatabase封裝的方法也可以,只是本人不是很喜歡用。
~~~
(3)數據庫升級:<span style="font-family: Arial, Helvetica, sans-serif;">重寫onUpgrade()即可:</span>
~~~
~~~
//當數據庫升級的時候,Android系統會自動調用onUpgrade方法
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
String sql = "DROP TABLE IF EXISTS address_db";
db.execSQL(sql);
onCreate(db);
}
~~~
所以這段完整代碼使用SQLiteOpenHelper完成了數據庫的創建、表的創建、數據庫升級,當然都需要有一個關閉數據庫的功能。
~~~
public class AddressDAO extends SQLiteOpenHelper{
private SQLiteDatabase db;
public AddressDAO(Context context)
{
super(context,"address_db",null,1);
}
//創建數據庫
@Override
public void onCreate(SQLiteDatabase db)
{
Log.e("onCreate", "create");
String sql = "CREATE TABLE IF NOT EXISTS people(id integer primary key autoincrement,name text,phone text,workplace text,gender integer);";
db.execSQL(sql);
}
//當數據庫升級的時候,Android系統會自動調用onUpgrade方法
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
String sql = "DROP TABLE IF EXISTS address_db";
db.execSQL(sql);
onCreate(db);
}
//關閉數據庫服務
public void closeDB(SQLiteDatabase db)
{
if(db!=null)
{
db.close();
}
}
//...
}
~~~
2、在前面我們就已經使用過SQLiteDatabase對象了:db,這個類主要完成對數據的基本操作、執行SQL語句等等首先我們要使用**SQLiteDatabase**對象需要通過SQLiteOpenHelper.getWritableDatabase()或者getReadeableDatabase()方法獲取,前者獲取寫入后者獲取讀出的SQLiteDatabase對象
比如插入數據
~~~
//插入數據
public void add()
{
String sql = "insert into people values(null,'張亞茹','13716762131','北京','0');";
//獲取SQLiteDatabase對象
db = this.getWritableDatabase();
db.execSQL(sql);
}
~~~
~~~
<span style="font-family: Arial, Helvetica, sans-serif;">
</span>
~~~
~~~
<span style="font-family: Arial, Helvetica, sans-serif;">OK,最近幾天學習android寫BLOG發現好難寫,自己理解清楚了或者沒理解清楚,要寫出來都是一件很痛苦的事情,要寫清楚明白,更是痛苦。</span>
~~~