【发布时间】:2020-11-04 17:10:36
【问题描述】:
我正在构建一个移动应用程序,我使用 SQLite 作为数据存储...
我有两种方法可以在我的移动应用中执行 sql-query
首先在应用加载时打开与数据库的连接并在应用的生命周期内使用它,并在应用关闭时关闭它。
第二次为每个查询执行打开一个连接。
在速度和可靠性方面哪个更好
【问题讨论】:
-
前者快得多。
-
@Shawn 为什么成功的几率很小?
我正在构建一个移动应用程序,我使用 SQLite 作为数据存储...
我有两种方法可以在我的移动应用中执行 sql-query
首先在应用加载时打开与数据库的连接并在应用的生命周期内使用它,并在应用关闭时关闭它。
第二次为每个查询执行打开一个连接。
在速度和可靠性方面哪个更好
【问题讨论】:
除了推荐使用Room,我推荐使用SQLiteOpenHelper。这是如何处理这个问题的完美实现。它会打开一次数据库并在整个实时期间使用此实例。助手甚至可以识别实例何时关闭并为您重新打开它:
拥有一个 SQL Helper 实例,并使其可用于所有 ViewModel(或控制器或其他任何东西)。
例如,您可以在 MainApp(如果您使用多个活动)或 MainActivity(如果您只使用一个)中有一个静态引用,然后只需通过 MainActivity.getDbHelper() 访问它。
您可以在需要访问的地方致电
db = dbHelper.getReadableDatabase()
// or
db = dbHelper.getWriteableDatabase()
通过 query() 获取光标或使用 exec() 修改数据库
更新:
public class DatabaseHelper extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "dbName.db";
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_YOUR_TABLE_STRING);
}
}
【讨论】: