如何使用android中的WHERE子句仅为一列更新Sqlite数据库

时间:2012-11-28 10:43:57

标签: android database sqlite android-intent

  

可能重复:
  SQLite in Android How to update a specific row

是否可以使用where status更新一列的数据库 这是我的表结构,我需要使用“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+""); 
    }

先谢谢..

2 个答案:

答案 0 :(得分:15)

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

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

我在这里添加了引用'"+s+"'

没有它,这是你的字符串扩展的方式:

"UPDATE autosms SET messagestatus=Send WHERE id=1234

SQLite将尝试查找名为Send的列,并将messagestatus设置为其'value。

答案 1 :(得分:0)

来自execSQL()方法的文档:

执行一个非SELECT / INSERT / UPDATE / DELETE的SQL语句。

您应该使用update()方法