SQLiteException:没有这样的列:2066148(代码1):特殊字符

时间:2014-12-09 03:33:43

标签: android sqlite

我遇到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。 怎么解决?提前谢谢。

2 个答案:

答案 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) });

它完美无缺!