2011-08-02 231 views
1

我想使用下面的代碼,但我無法更新我的表。更新表無法正常工作

db = dbHelper.getWritableDatabase(); 
int i = 1; 
String updateStatement = "update "+MESSAGE_TABLE+" SET status ="+i+" where message_id = "+message_id; 
SQLiteStatement update; 
update = db.compileStatement(updateStatement); 
update.executeInsert(); 

相反的update.executeInsert(),我也試過update.executeI(),但它也不能工作。

+0

如果將錯誤它將幫助別人診斷問題 –

+0

在日誌貓它顯示的數據被更新的logcat的輸出。但是當我從表中檢索數據...數據沒有更新 –

+0

你確定executeUpdateDelete()的返回值是1嗎? –

回答

1

希望這會有所幫助

db = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE);  

ContentView update = new ContentView(); 
update.put("fieldNameToUpdate","Value Here as a String " or integer); 
db.update("table", update,/*where clause*/ "id=2",null); 

db.close(); 

這對我有用。 您可以根據您的要求更改值。

感謝 沙阿..

0

我想,如果所有其他的事情是正確的問題是,在您的查詢

問題可能出在該領域type.Suppose如果MESSAGE_ID不是number.Then使用像

String updateStatement = "update "+MESSAGE_TABLE+" SET status ="+i+" where message_id = '"+message_id+"'"; 

同爲領域的地位,如果它不是一個數字類型必須使用'

0

如果你想使用SQLiteStatementexecuteUpdateDelete()方法,這個工程:

String sql = "UPDATE table_name SET column_2=? WHERE column_1=?"; 
SQLiteStatement statement = db.compileStatement(sql); 

int id = 7; 
String stringValue = "hi there"; 

statement.bindString(1, stringValue); 
statement.bindLong(2, id); // These match to the two question marks in the sql string 

int numberOfRowsAffected = statement.executeUpdateDelete(); 

注:executeUpdateDelete()在API 11 See this Q&A介紹。

Fuller explanation on how to use prepared statements