【发布时间】:2014-10-24 09:05:46
【问题描述】:
我想通过检查 2 列来更新数据库。如果两列相同,则更新,否则作为新行插入。
mydatabase.insertOrThrow(DATABASE_TABLE, null, records);
} catch (SQLiteConstraintException e) {
String where = KEY_ADDRESS +"=? and " + KEY_VALUE + "=?";
String[] whereArgs = new String[] {String.valueOf(address), String.valueOf(value)};
mydatabase.update(DATABASE_TABLE, records, where,whereArgs);
}
地址和值是主键,地址是唯一的。
现在它只在开头插入。当我更改值时,它不会插入任何记录。
这是我的创建函数:
String create = String.format("CREATE TABLE %s ( %s TEXT ,%s TEXT NOT NULL UNIQUE ,"
+" %s INTEGER, %s TEXT, %s TEXT, PRIMARY KEY(%s, %s) );",
DATABASE_TABLE, KEY_NAME, KEY_ADDRESS, KEY_VALUE, KEY_ARRAY,
KEY_TİME, KEY_ADDRESS, KEY_VALUE);
我认为问题在于插入功能。它以值开头插入,但在我更改值后它不会作为新行插入。当我改回旧值时,它会更新行。
很抱歉添加有关问题的新信息,但我无法提出新问题。
【问题讨论】:
-
我解决了问题。我在 create 语句中写了 unique。