问题已解决,看下方评论
我正在尝试更新数据库,但 where 子句不起作用。我已经看过代码示例,但它们对我不起作用。
这是表格的样子。
public static final String SQL_CREATE_ENTRIES =
"CREATE TABLE " + MessageEntry.TABLE_NAME + " (" +
MessageEntry.COLUMN_NAME_ENTRY_ID + " INT AUTO_INCREMENT PRIMARY KEY," +
MessageEntry.COLUMN_NAME_ENTRY_USERNAME +
" VARCHAR(20)," +
MessageEntry.COLUMN_NAME_ENTRY_MESSAGE+" VARCHAR(1000)," +
MessageEntry.COLUMN_NAME_ENTRY_OUT + " SMALLINT NOT NULL DEFAULT 0,"+
MessageEntry.COLUMN_NAME_ENTRY_STATUS + " VARCHAR(10),"+
MessageEntry.COLUMN_NAME_ENTRY_TIME + " TIMESTAMP DEFAULT CURRENT_TIMESTAMP)";
这是更新表格的方法。我尝试了几个更新调用,但都不起作用。还用硬值 1 进行了测试。
public void updateChatMessageStatus(long id,String status){
MessageHelper helper = new MessageHelper(this.context);
SQLiteDatabase db = helper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(MessageEntry.COLUMN_NAME_ENTRY_STATUS, status);
String[] where = {String.valueOf(id)};
db.update(MessageEntry.TABLE_NAME, values, MessageEntry.COLUMN_NAME_ENTRY_ID+"=" +id, null);
db.update(MessageEntry.TABLE_NAME, values, MessageEntry.COLUMN_NAME_ENTRY_ID+"=" +1, null);
db.update(MessageEntry.TABLE_NAME, values, MessageEntry.COLUMN_NAME_ENTRY_ID+"=1", null);
db.update(MessageEntry.TABLE_NAME, values, MessageEntry.COLUMN_NAME_ENTRY_ID+"=?", where);
db.execSQL("UPDATE " + MessageEntry.TABLE_NAME+ " SET " +MessageEntry.COLUMN_NAME_ENTRY_STATUS+"='"+status
+"' where "+ MessageEntry.COLUMN_NAME_ENTRY_ID +"="+1);
db.execSQL("UPDATE " + MessageEntry.TABLE_NAME+ " SET " +MessageEntry.COLUMN_NAME_ENTRY_STATUS+"='"+status
+"' where "+ MessageEntry.COLUMN_NAME_ENTRY_ID +"="+id);
}
我有点卡在这里,谢谢你的帮助。
最佳答案
id 列创建错误。在我使用 int 和 auto_increment 创建自动生成的 id 列之前。但在 Android 中,创建自动生成键列的正确方法是使用 autoincrement 和 integer。
更正表
"CREATE TABLE " + MessageEntry.TABLE_NAME + " (" +
MessageEntry.COLUMN_NAME_ENTRY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +...
更新我使用的调用
values.put(MessageEntry.COLUMN_NAME_ENTRY_STATUS, status);
String[] where = {String.valueOf(id)};
db.update(MessageEntry.TABLE_NAME, values, MessageEntry.COLUMN_NAME_ENTRY_ID+"=?", where);
关于带有id的android sql where子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22424230/