Android SQLiteOpenHelper Sqlite資料庫的建立與開啟
阿新 • • 發佈:2019-02-07
Android Sqlite資料庫是一個怎樣的資料庫?
答:是一種嵌入式小型裝置,移動裝置,的資料庫,應用在穿戴裝置(例如:智慧手錶,計算手環 等等),移動裝置(例如:Android系統型別的手機 等等),屬於嵌入式關係型資料庫。
在Android開發過程中,只需呼叫Android所提供的Sqlite API介面,底層會呼叫Sqlite.c 程式去生成資料庫,建立表字段 等等;
雖然在Android Sqlite3 支援了 null,integer,real,char(n),varchar(n),decimal(p,s),這些型別,但是 請注意:除了ID唯一主鍵是integer型別,其他所有型別,最後都會變成TEXT型別。
在Android API中提供了,SQLiteOpenHelper對資料庫建立,管理操作等;
建立表的語句:create table student_table(_id integer primary key autoincrement, name text);
import android.content.Context;
import android.database.DatabaseErrorHandler;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class MySQLiteOpenHelper extends SQLiteOpenHelper {
/**
* 資料庫的名稱
*/
private static final String DATABASE_NAME = "PersonDB.db";
/**
* 資料庫的版本號,以後要升級資料庫,修改版本號為 +1 即可
*/
private static final int DATABASE_VERSION = 1;
private static MySQLiteOpenHelper instance;
/**
* 單例模式
* @param context 傳入上下文
* @return 返回MySQLiteOpenHelper物件
*/
public static MySQLiteOpenHelper getInstance(Context context) {
if (null == instance) {
synchronized (MySQLiteOpenHelper.class) {
if (null == instance) {
instance = new MySQLiteOpenHelper(context, DATABASE_NAME, null, DATABASE_VERSION);
}
}
}
return instance;
}
// 構造方法不對外暴露
private MySQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
// 構造方法不對外暴露
private MySQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version, DatabaseErrorHandler errorHandler) {
super(context, name, factory, version, errorHandler);
}
// 初始化操作,會執行onCreate
@Override
public void onCreate(SQLiteDatabase db) {
// 建立一個 student_table表
db.execSQL("create table student_table(_id integer primary key autoincrement, name text);");
}
// 用於升級資料庫,當Version 變動了,就會呼叫onUpgrade方法
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
sqLiteOpenHelper.getWritableDatabase();,沒有資料庫就建立資料庫,有資料庫就開啟資料庫。
@Override
public void onClick(View v) {
MySQLiteOpenHelper sqLiteOpenHelper = MySQLiteOpenHelper.getInstance(MainActivity.this);
sqLiteOpenHelper.getWritableDatabase();
}
生成完成:
看看錶結構: