2016-01-22 92 views
0

我試圖從下面的代碼行復制此SQLite的語句:SQLite中替換功能

Cursor cursor = db.rawQuery("update tbl_details SET ticket = replace(ticket, " + tempID + ", " + ticket + ")", null); 

這一個:

SQLiteDatabase db = this.getWritableDatabase(); 
     ContentValues cv = new ContentValues(); 
     cv.put("ticket", "replace(ticket, " + tempID + ", " + ticket + ")"); 
     db.update("tbl_details", cv, null, null); 
     return true; 

我所試圖做的是獲得新ID並替換數據庫中舊臨時ID的所有實例。但是上面的代碼正在改變ticket列中的所有記錄。

請幫忙。謝謝!

+0

嗯:['update(...)'](https://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#update%28java.lang.String,%20android.content .ContentValues,%20java.lang.String,%20java.lang.String []%29):* WhereClause \t更新時應用的可選WHERE子句。傳遞null將更新所有行*。您傳遞'null',因此所有行都會受到影響。 – dhke

+0

我應該在ContentValues cv中放入什麼內容? –

回答

2

您可以使用ContentValues僅綁定文字值,而不是像replace(...)這樣的表達式。

要運行原始的UPDATE SQL,只需使用execSQL()而不是rawQuery()rawQuery()單獨不會實際運行代碼,直到返回的Cursor被移動。