2012-11-28 64 views
4

可能重複:
SQLite in Android How to update a specific row如何使用只有一列更新SQLite數據庫WHERE子句中的Android

是否有可能爲一列用更新數據庫,在那裏statment 這是我的表結構,我需要使用「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+""); 
    } 

謝謝..

+0

不能得到你。你能解釋一下嗎? – hims056

+0

我需要更新messagestatus使用ID,但我不能...如何做到這一點? – Vishnu

+0

那麼你的問題是什麼? – hims056

回答

13

字符串值必須用引號括起來:

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

我在這裏添加了報價'"+s+"'

沒有它,這裏是你的字符串是如何擴展:

"UPDATE autosms SET messagestatus=Send WHERE id=1234 

SQLite的將嘗試找到一個名爲列發送和設置messagestatus它的價值。

+0

謝謝Simon。讓我檢查這個... – Vishnu

+0

是的,明白了......完美的作品..謝謝.... – Vishnu

+0

不客氣。請記住接受答案。謝謝。 – Simon

0

從上execSQL()方法DOC:

執行一個SQL語句是不是一個SELECT/INSERT/UPDATE/DELETE。

您應該使用update()方法代替

相關問題