[英]How to check whether a Room Database exists?
“Room 持久性库在 SQLite 上提供了一个抽象层,以便在利用 SQLite 的全部功能的同时实现更强大的数据库访问。”
所以我想出了这个方法
public static boolean isDbExist(Context context)
{
final String DATABASE_NAME = "tippie";
final String DB_PATH = context.getDatabasePath(DATABASE_NAME + ".db").getAbsolutePath();
SQLiteDatabase db;
try
{
db = SQLiteDatabase.openDatabase(DB_PATH, null,
SQLiteDatabase.OPEN_READONLY);
db.close();
} catch (SQLiteException e) { return false; }
return true;
}
总是返回false。
有什么办法可以检查Room Database是否已经初始化?
有什么办法可以检查Room Database是否已经初始化?
如果房间数据库已经建立/打开(初始化),那么它将包含一个名为room_master_table的表。
因此,如果打开成功,您可以运行查询以查看该表是否存在。
例如
Cursor csr = db.query("sqlite_master",null,"name = ?",new String[]{"room_master_table"},null,null,null);
if (csr.getCount() > 0) {
//db is a room database
} else {
// db is not a room database
}
csr.close();
总是返回false。
我怀疑问题是您将.db附加到数据库名称。 .db扩展名不是必需的。 如果在打开数据库时使用没有扩展名的数据库名称(在房间中构建它),那么文件名将没有扩展名。
如果您总是只使用 DATABASE_NAME,那么您可能不会遇到问题:-
final String DB_PATH = context.getDatabasePath(DATABASE_NAME).getAbsolutePath();
private fun databaseFileExists(): Boolean {
return try {
File(getDatabasePath("MyInfoDatabase.db").absolutePath).exists()
}catch (e: Exception){
false
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.