8

可能重复:
Android 中的 SQLite 如何更新特定行

是否可以使用 where 语句更新一列的数据库这是我的表结构,我需要使用“id”更新“messagestatus”列。

db.execSQL("CREATE TABLE IF NOT EXISTS autosms(id INTEGER PRIMARY KEY AUTOINCREMENT ,phonenumber VARCHAR(15) ,message VARCHAR(5000) , year VARCHAR(10) , month VARCHAR(10) , date VARCHAR(10) , hour VARCHAR(10) , minute VARCHAR(10) , messagestatus VARCHAR(10))");

我试过这个,但没有成功,有一个警告“没有这样的列发送”

public void update(int id)
{
        String s = "Send";
        db= SQLiteDatabase.openDatabase("data/data/com.example.schduled_messages/SMS_Schdule_Sample.db", null, SQLiteDatabase.CREATE_IF_NECESSARY);
        db.execSQL("UPDATE autosms SET messagestatus="+s+" WHERE id="+id+""); 
    }

提前致谢..

4

2 回答 2

17

字符串值必须用引号引起来:

"UPDATE autosms SET messagestatus='"+s+"' WHERE id="+id+""

我在这里添加了报价'"+s+"'

没有它,你的字符串是如何扩展的:

"UPDATE autosms SET messagestatus=Send WHERE id=1234

SQLite 将尝试找到一个名为 Send 的列并将 messagestatus 设置为它的值。

于 2012-11-28T10:50:31.887 回答
0

execSQL()方法的文档中:

执行不是 SELECT/INSERT/UPDATE/DELETE 的单个 SQL 语句。

您应该改用update()方法

于 2012-11-28T10:52:17.340 回答