8

重複の可能性:
AndroidのSQLite特定の行を更新する方法

whereステートメントを使用して1つの列のデータベースを更新することは可能ですか?これは私のテーブル構造であり、「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 に答える