Android SQLiteException:无此列:٢٠٦٦١٤٨;(代码1):特殊字符

Android SQLiteException:无此列:٢٠٦٦١٤٨;(代码1):特殊字符,android,sqlite,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) { open

我遇到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是我的senderID。
如何修复它?提前感谢。

String.format
使用用户的默认区域设置,这可能不适合SQL(如您所见)

或者显式指定适当的区域设置:

whereClause = String.format(Locale.US, "%s = %d", COLUMN_HISTORY_SENDER_ID, senderID);
或者不使用
格式

whereClause = COLUMN_HISTORY_SENDER_ID + " = " + senderID;

对。不要在SQL语句中使用STRING.FORMAT

我用


它工作完美

尝试此数据库。更新(表\u历史记录,结果,列\u历史记录\u发件人\u ID+“=?”,新字符串[]{String.valueOf(senderID)});您不应该翻译数字。为什么要对SQL语句使用
String.format()
database.update(TABLE_HISTORY, result, COLUMN_HISTORY_SENDER_ID
            + " = ?", new String[] { String.valueOf(senderID) });