Android SQLite INSERT或IGNORE不起作用

Bub*_*bbi 5 sqlite android

为什么IGNORE语句不起作用?每次我运行这个相同的值都插入数据库,我不知道为什么?

        myDB = this.openOrCreateDatabase(MY_DB_NAME, MODE_PRIVATE, null);
        myDB.execSQL("INSERT OR IGNORE INTO " + MY_DB_TABLE + "(db_datum, db_zahlen, db_scheine)" 
                +"VALUES ('"+datum+"',"+
                "'"+zahlen+"',"+
                "'"+9+"');");
Run Code Online (Sandbox Code Playgroud)

db模式是:

  • db_datum(varchar(100))

  • db_zahlen(varchar(100))

  • db_scheine(整数)

我有2个字符串"datum"和"zahlen",并希望将它们插入数据库中.现在问题是,如果db中已经存在相同的字符串并且代码再次运行,则它们将被忽略并且永远不会再次插入.

Gau*_*ham 14

您可以使用insertWithOnConflict.例如:

mDb.insertWithOnConflict(DATABASE_TABLE, null, initialValues, SQLiteDatabase.CONFLICT_IGNORE);
Run Code Online (Sandbox Code Playgroud)


Mat*_*ieu 2

您不应该使用execSQLINSERT 命令(检查文档)。

使用myDB.insertOrThrow(...)

ContentValues cv = new ContentValues();
cv.put("db_datum", datum);
cv.put("db_zahlen", zahlen);
cv.put("db_scheine", 9);
myDB.insertOrThrow(MY_DB_TABLE, null, cv);
Run Code Online (Sandbox Code Playgroud)