在我的活动中,我有例如
SQLiteDatabase db = openOrCreateDatabase(Preferences.DB_NAME, Context.MODE_PRIVATE, null);
db.execSQL("CREATE TABLE IF NOT EXISTS data (id INTEGER PRIMARY KEY, value VARCHAR)");
Cursor dbResult = db.rawQuery("SELECT value FROM data", null);
// do sometning with cursors
dbResult.close();
db.close();
Run Code Online (Sandbox Code Playgroud)
什么是使用的好处SQLiteOpenHelper像
DatabaseHelper helper = new DatabaseHelper(this);
SQLiteDatabase db = helper.getWriteableDatabase();
SQLiteDatabase db_2 = helper.getReadableDatabase();
Cursor dbResult = db_2.rawQuery("SELECT value FROM data", null);
// do sometning with cursors
dbResult.close();
helper.close();
Run Code Online (Sandbox Code Playgroud)
类本身
public class DatabaseHelper extends SQLiteOpenHelper {
public DatabaseHelper(Context context) {
super(context, Preferences.DB_NAME, null, Preferences.DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String query = "CREATE TABLE IF NOT EXISTS data (id INTEGER PRIMARY KEY, value VARCHAR)";
db.execSQL(query);
db.close();
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
Run Code Online (Sandbox Code Playgroud)
Jac*_*ack 38
SQLiteDatabase具有创建,删除,执行SQL命令以及执行其他常见数据库管理任务的方法.
用于管理数据库创建和版本管理的帮助程序类.
我会说这么多,SQLiteOpenHelper附带的onUpgrade在升级你的应用程序时非常方便.它主要用于创建和升级/版本管理.SQLiteDatabase主要用于CRUD操作(您可以使用它创建,但这是SQLiteOpenHelper的用途).
Dav*_*ven 12
SQLiteOpenHelper提供的实用程序可以简化创建和初始化数据库的任务(如果尚未创建),并在应用程序升级和数据库架构更改时转换数据库的内容.
如果你有一个非常简单的数据库模式,那么它并没有真正让你得到太多,但对于任何复杂的,它都是一个明确的帮助.它确保涵盖所有繁琐的边缘条件,以便您不必这样做,例如将事务放在所有正确的位置以避免数据库损坏.
在其他答案之上SQLiteOpenHelper,这是课堂上一个非常重要的功能,它有 2 个同步方法getWritableDatabase()和getReadableDatabase().
这意味着您的数据库操作是线程安全的。
SQLiteOpenHelper类的代码片段
public SQLiteDatabase getReadableDatabase() {
synchronized (this) {
return getDatabaseLocked(false);
}
}
Run Code Online (Sandbox Code Playgroud)
和
public SQLiteDatabase getWritableDatabase() {
synchronized (this) {
return getDatabaseLocked(true);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23482 次 |
| 最近记录: |