我正在尝试在我的应用程序的SQLite数据库中创建一个表,该数据库有3列接受整数值。要创建表,我使用以下代码:
db = openOrCreateDatabase("HelpMeDatabase", Context.MODE_PRIVATE, null);
db.execSQL("CREATE TABLE IF NOT EXISTS settings (\n" +
"\t whatsapp \t INTEGER NOT NULL DEFAULT 1,\n" +
"\t viber \t INTEGER NOT NULL DEFAULT 1,\n" +
"\t vibration \t INTEGER NOT NULL DEFAULT 1\n" +
");");
表已成功创建,但默认值未分配给列。你知道为什么会这样吗?
答案 0 :(得分:0)
抱歉花了太长时间才回答。感谢@ nkorth和@Rajesh Khadka的建议,我设法解决了我的问题。
所以,在表格的创作之后,我把这个条件只插入一行。
db.execSQL("CREATE TABLE IF NOT EXISTS settings (" +
" whatsapp INTEGER DEFAULT 1 NOT NULL," +
" viber INTEGER DEFAULT 1 NOT NULL," +
" vibration INTEGER DEFAULT 1 NOT NULL" +
");");
if (isFirstTime()) {
db.execSQL("INSERT INTO settings VALUES (1,1,1)");
}
isFirstTime():
private boolean isFirstTime()
{
SharedPreferences preferences = getPreferences(MODE_PRIVATE);
boolean ranBefore = preferences.getBoolean("RanBefore", false);
if (!ranBefore) {
// first time
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean("RanBefore", true);
editor.commit();
}
return !ranBefore;
}
此代码确保Insert只执行一次。