带有id的android sql where子句

标签 android sql where-clause clause

问题已解决,看下方评论

我正在尝试更新数据库,但 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 列创建错误。在我使用 intauto_increment 创建自动生成的 id 列之前。但在 Android 中,创建自动生成键列的正确方法是使用 autoincrementinteger

更正表

   "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/

相关文章:

android - 在 EditText android 中禁用空格键

sql - 根据匹配条件对 SQL 记录进行排序

使用 group by 子句优化 MySQL 查询

php - mysql中的存储过程用可变参数进行选择

umbraco - 如何在 Umbraco Collection 上申请Where 条件

android - 当我将 AlertDialog.Builder 的 setSingleChoiceItems 与 listadapter 一起使用时,单选按钮不显示

android - 在没有生命周期所有者的情况下使用 LiveData

where 子句上的 mysql boolean 值

带有 WHERE 子句的 MySQL SELECT 查询返回的结果不严格相等

android - 如何使用 Android 24+ 多窗口模式在运行时正确处理区域设置更改?