Java Android:App一直在预填充sqlite数据库
我目前有一个活动,其中包含一个共享的首选项,用于判断sqlite数据库是否已预填充或是否需要填充。但是,每次创建活动时,我的应用程序都会填充 我目前有以下共享首选项的方法:Java Android:App一直在预填充sqlite数据库,java,android,database,sqlite,sharedpreferences,Java,Android,Database,Sqlite,Sharedpreferences,我目前有一个活动,其中包含一个共享的首选项,用于判断sqlite数据库是否已预填充或是否需要填充。但是,每次创建活动时,我的应用程序都会填充 我目前有以下共享首选项的方法: public void checkDB() { SharedPreferences sharedPref = MainActivity.this .getPreferences(Context.MODE_PRIVATE); Editor editor = sha
public void checkDB() {
SharedPreferences sharedPref = MainActivity.this
.getPreferences(Context.MODE_PRIVATE);
Editor editor = sharedPref.edit();
editor.putBoolean("CHECK", true); // Storing boolean - true/false
editor.commit(); // commit changes
prepopulate();
}
public void isChecked() {
boolean setup = false;
SharedPreferences sharedPref = MainActivity.this
.getPreferences(Context.MODE_PRIVATE);
setup = sharedPref.getBoolean("CHECK", true); // getting boolean
if (setup = false) {
checkDB();
} else {
}
以下是我在onCreate方法中如何调用它们:
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
checkDB();
isChecked();
loadListView();
registerListClickCallback();
我确信我在共享首选项方法中的一个布尔值有问题。为方便起见,以下是我的预填充数据库字段的循环:
public void prepopulate() {
Locker setup = new Locker(this);
for (int x = 0; x < 46; x++) {
setup.open();
String lockerNumber = "Locker" + x;
setup.createLockerEntry(lockerNumber, 0);
setup.close();
}
}
public void预填充(){
储物柜设置=新储物柜(此);
对于(int x=0;x<46;x++){
setup.open();
字符串lockerNumber=“Locker”+x;
setup.createLockerEntry(lockerNumber,0);
setup.close();
}
}
您正在调用isChecked()
方法中的checkDB()
方法,因此不需要调用它onCreate()
您正在
isChecked()
方法中调用checkDB()
方法,因此不需要调用它onCreate()
您正在
isChecked()
方法中调用checkDB()
方法,因此不需要调用它onCreate()
您正在
isChecked()
方法中调用checkDB()
方法,因此不需要调用它onCreate()
为什么使用共享首选项您不需要使用此选项。如果要检查数据库是否存在,请尝试以下操作:
private static boolean doesDatabaseExist(ContextWrapper context, String dbName) {
File dbFile=context.getDatabasePath(dbName);
return dbFile.exists();
}
为什么使用共享首选项您不需要使用此选项。如果要检查数据库是否存在,请尝试以下操作:
private static boolean doesDatabaseExist(ContextWrapper context, String dbName) {
File dbFile=context.getDatabasePath(dbName);
return dbFile.exists();
}
为什么使用共享首选项您不需要使用此选项。如果要检查数据库是否存在,请尝试以下操作:
private static boolean doesDatabaseExist(ContextWrapper context, String dbName) {
File dbFile=context.getDatabasePath(dbName);
return dbFile.exists();
}
为什么使用共享首选项您不需要使用此选项。如果要检查数据库是否存在,请尝试以下操作:
private static boolean doesDatabaseExist(ContextWrapper context, String dbName) {
File dbFile=context.getDatabasePath(dbName);
return dbFile.exists();
}
重新填充的原因是您无条件地调用了@Kedamath中提到的
checkDB()
但是,请考虑使用简单的旧<代码> SqtLeLeOpenHelpE/COD>并在其<代码> OnCeCuto()/<代码>中放置任何预填充代码。当数据库文件不存在并且需要创建表和任何预填充的数据时,框架只调用该方法一次。
重新填充的原因是您无条件地调用checkDB()
,如@Kedamath中所述
但是,请考虑使用简单的旧<代码> SqtLeLeOpenHelpE/COD>并在其<代码> OnCeCuto()/<代码>中放置任何预填充代码。当数据库文件不存在并且需要创建表和任何预填充的数据时,框架只调用该方法一次。
重新填充的原因是您无条件地调用checkDB()
,如@Kedamath中所述
但是,请考虑使用简单的旧<代码> SqtLeLeOpenHelpE/COD>并在其<代码> OnCeCuto()/<代码>中放置任何预填充代码。当数据库文件不存在并且需要创建表和任何预填充的数据时,框架只调用该方法一次。
重新填充的原因是您无条件地调用checkDB()
,如@Kedamath中所述
但是,请考虑使用简单的旧<代码> SqtLeLeOpenHelpE/COD>并在其<代码> OnCeCuto()/<代码>中放置任何预填充代码。当数据库文件不存在并且需要创建表和任何预填充的数据时,框架只调用该方法一次。
您有setup=sharedPref.getBoolean(“CHECK”,true);我认为默认值应该是false。如果(setup==false)或(!setup)您的setup=sharedPref.getBoolean(“CHECK”,true),也应该是;我认为默认值应该是false。如果(setup==false)或(!setup)您的setup=sharedPref.getBoolean(“CHECK”,true),也应该是;我认为默认值应该是false。如果(setup==false)或(!setup)您的setup=sharedPref.getBoolean(“CHECK”,true),也应该是;我认为默认值应该是false。也应该是if(setup==false)或if(!setup)我应该把这个放在哪个类中?我应该把这个放在哪个类中?我应该把这个放在哪个类中?我应该把这个放在哪个类中?