我正在使用Room API在我的Android应用中实现数据库。似乎每次加载我的应用程序时,它都会尝试一次又一次地创建数据库。有没有办法限制这个?
db = Room.databaseBuilder(context, AppDatabase.class, "database-name").build();
答案 0 :(得分:3)
当你创建数据库时,它会在应用程序启动时调用它们的db create.you用于app活动下面的代码,并且应用程序类调用中的manifest文件中的活动调用就像代码下面使用的那样...
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>button text 1</button>
<button>button text 2</button>
<button>button text 3</button>
} 并添加以下行清单文件..在应用程序标记中添加以下行
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;
}
答案 1 :(得分:1)
您可以在db中获取实体计数(TODO应用-示例)。实体>0。
input[type="file"]
// DB类
it("check download file to input", () => {
const files = [
{
name: "test.png",
size: 50000,
type: "image/png"
}
];
const wrapper = mount(InputCropper);
const input = wrapper.find('input[type="file"]');
input.files = files;
input.trigger("change");
expect(input.files.length).to.equal(1);
});
// Dao界面
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
}
}
//型号
@Database(entities = [Task::class], version = 1, exportSchema = false)
abstract class AppDatabase : RoomDatabase() {
abstract fun taskDao(): TaskDao
}
// CheckDB
@Dao
interface TaskDao {
@Query("SELECT COUNT(id) FROM tasks")
fun getTasksCount(): Int
}
答案 2 :(得分:0)
您正在使用db,实际上是一个文件。您可以检查,如果存在,此方法可能会有所帮助:
private static boolean doesDatabaseExist(Context context, String dbName) {
File dbFile = context.getDatabasePath(dbName);
return dbFile.exists();
}
答案 3 :(得分:0)
试试这个
if (!db.exists()) {
// Database does not exist so copy it from assets here
Log.i("Database", "Not Found");
} else {
Log.i("Database", "Found");
}