我有这个数据库:
private static final String CREATE_TABLE_RISCALA = "CREATE TABLE IF NOT EXISTS " + TABLE_RISCALA
+ "(" + KEY_ID + " INTEGER PRIMARY KEY autoincrement,"
+ KEY_STORE_TIPO + " TEXT not null,"
+ KEY_STORE_NAME + " TEXT not null,"
+ KEY_RISC_TOT + " REAL,"
+ KEY_RISC_ING + " REAL,"
+ KEY_ING + " TEXT,"
+ KEY_FLAG + " INTEGER ,"
+ KEY_1 + " TEXT,"
+ KEY_2 + " TEXT,"
+ KEY_3 + " TEXT,"
+ KEY_4 + " REAL,"
+ KEY_5 + " REAL,"
+ KEY_CREATED_AT + " TEXT" + ")";
并且表格是正确创建的,当我在里面插入数据时我使用了这个函数:
public long insert_row_riscala(String tipo,String nome) {
long id = 0;
ContentValues values = new ContentValues();
values.put(KEY_STORE_TIPO, tipo);
values.put(KEY_STORE_NAME, nome);
values.put(KEY_RISC_TOT, "1000");
values.put(KEY_RISC_ING, "1000");
values.put(KEY_FLAG, "0");
values.put(KEY_CREATED_AT, getDateTime());
// insert row
synchronized (dbLock) {
//id = dbWrite.insert(TABLE_RISCALA, null, values);
//id = dbWrite.insertWithOnConflict(TABLE_RISCALA, null, values, SQLiteDatabase.CONFLICT_REPLACE);
id = dbWrite.insertOrThrow(TABLE_RISCALA, null, values);
}
return id;
}
如果插入的值不同,则一切正常,例如:
id(由数据库自动增量)
the value in the field KEY_STORE_TIPO is "Sorbetto"
the value in the field KEY_STORE_NAME is "Mora"
当我尝试插入(添加到数据库)新值时,例如:
id(由数据库自动增量)
the value in the field KEY_STORE_TIPO is "Granita"
the value in the field KEY_STORE_NAME is "Mora"
返回id是正确的(> 0)但是当我通过外部程序(DB Browser for SQLite)读取数据库以验证插入数据时,我发现不是第二次INSERT。 没有异常生成! 怎么可能?
编辑已解决
在另一个线程中,我有另一个查询
String selectQuery = "DELETE FROM " + TABLE_RISCALA + " WHERE " + KEY_ID + " NOT IN (SELECT MIN(" + KEY_ID + ") FROM " + TABLE_RISCALA +
" GROUP BY " + KEY_STORE_NAME + ")";
但我错过了插入KEY_STORE_TIPO !! 删除重复项的最终查询是:
String selectQuery = "DELETE FROM " + TABLE_RISCALA + " WHERE " + KEY_ID + " NOT IN (SELECT MIN(" + KEY_ID + ") FROM " + TABLE_RISCALA +
" GROUP BY " + KEY_STORE_TIPO + "," + KEY_STORE_NAME + ")";
抱歉!