Android SQLiteException:无此列:٢٠٦٦١٤٨;(代码1):特殊字符
我遇到SQLite错误问题:由以下原因引起: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
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) });