如何检查Android中是否存在数据库?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何检查Android中是否存在数据库?相关的知识,希望对你有一定的参考价值。
我正在使用Room API在我的android应用中实现数据库。似乎每次加载我的应用程序时,它都会尝试一次又一次地创建数据库。有没有办法限制这个?
db = Room.databaseBuilder(context, AppDatabase.class, "database-name").build();
答案
当你创建数据库时,它会在应用程序启动时调用它们的db create.you用于下面的app活动中的代码,并且该活动调用应用程序类调用中的manifest文件,如下面的代码所示。
public class AppActivity extends Application
AppDatabase db;
@Override
public void onCreate()
super.onCreate();
db = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "database-name").build();
public AppDatabase getDatabase()
return db;
并添加以下行清单文件..在应用程序标记中添加以下行
android:name="AppActivity"
另一答案
您可以获取db中的实体数量(TODO应用程序 - 示例)。实体> 0。
class App: Application()
override fun onCreate()
super.onCreate()
instance = this
database = Room.databaseBuilder(applicationContext,
AppDatabase::class.java, "database").build()
companion object
lateinit var instance: App
lateinit var database: AppDatabase
// DB类
@Database(entities = [Task::class], version = 1, exportSchema = false)
abstract class AppDatabase : RoomDatabase()
abstract fun taskDao(): TaskDao
// Dao界面
@Dao
interface TaskDao
@Query("SELECT COUNT(id) FROM tasks")
fun getTasksCount(): Int
//模型
@Entity(indices = [Index(value = ["title"], unique = true)], tableName ="tasks")
class Task(
var title: String = "",
var description: String = "",
var date: Date,
@Embedded
var remind: Constants.RemindPeriod = Constants.RemindPeriod.MIN5,
@Embedded
var prior: Priority) : Serializable
@PrimaryKey(autoGenerate = true)
var id: Long = 0
// CHECKDB
private fun checkDatabaseState()
doAsync
val db = App.database
val entityCount = db.taskDao().getTasksCount().or(0)
isDatabaseNotEmpty = entityCount > 0
另一答案
您正在使用db,实际上是一个文件。您可以检查,如果存在,此方法可能会有所帮助:
private static boolean doesDatabaseExist(Context context, String dbName)
File dbFile = context.getDatabasePath(dbName);
return dbFile.exists();
另一答案
试试这个
if (!db.exists())
// Database does not exist so copy it from assets here
Log.i("Database", "Not Found");
else
Log.i("Database", "Found");
以上是关于如何检查Android中是否存在数据库?的主要内容,如果未能解决你的问题,请参考以下文章
通过 Android 中的内容提供程序检查数据库表是不是存在