我遇到SQLite错误:引起:
android.database.sqlite.SQLiteException: no such column: ٢٠٦٦١٤٨ (code 1): , while compiling: UPDATE History SET unreadNum=? WHERE senderId = ٢٠٦٦١٤٨
我的代码是:
public void resetHistoryMessageUnreadNum(Integer senderID) {
openWrite();
ContentValues result = new ContentValues();
result.put(COLUMN_HISTORY_UNREAD_NUM, 0);
String whereClause = String.format("%s = %d", COLUMN_HISTORY_SENDER_ID,
senderID);
database.update(TABLE_HISTORY, result, whereClause, null);
database.close();
}
我不知道什么是“2066148”,为什么会出现?但我使用谷歌翻译:2066148 = 2066148. 2066148是我的senderID。 怎么解决?提前谢谢。
答案 0 :(得分:2)
String.format
使用用户的默认语言环境,这可能不适合SQL(如您所见)。
明确指定正确的区域设置:
whereClause = String.format(Locale.US, "%s = %d", COLUMN_HISTORY_SENDER_ID, senderID);
或不要使用format
:
whereClause = COLUMN_HISTORY_SENDER_ID + " = " + senderID;
答案 1 :(得分:0)
是。不要在SQL语句中使用STRING.FORMAT。
我用
database.update(TABLE_HISTORY, result, COLUMN_HISTORY_SENDER_ID
+ " = ?", new String[] { String.valueOf(senderID) });
它完美无缺!