SQLite:DEFAULT值未设置为表的列

时间:2015-07-22 14:50:30

标签: android sqlite

我正在尝试在我的应用程序的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" +
                ");");

表已成功创建,但默认值未分配给列。你知道为什么会这样吗?

1 个答案:

答案 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只执行一次。