2017-07-24 49 views
-1

我目前正在使用我的android應用程序的sqlite驗證和實施。目的是製作搜索關鍵字歷史記錄。所以在這種情況下,我希望當用戶輸入相同的關鍵字,但在不同的時間,我想通過更新sqlite數據庫中的「時間」列推進該關鍵字成爲最新的關鍵字。Android的SQLite更新錯誤沒有這樣的列

下面是代碼:

ContentValues values = new ContentValues(); 
values.put(KEY_TIME, time); 
sqLiteDatabase.update(TABLE_NAME_SEARCH, values, KEY_KEYWORD + " = " + keyword, null); 

但它會返回錯誤:

FATAL EXCEPTION: main 
Process: com.lakupon, PID: 24030 
android.database.sqlite.SQLiteException: no such column: a (code 1): , while compiling: UPDATE search SET time=? WHERE keyword = a 

注:在這種情況下,「一」是關鍵字,我輸入了兩次,所以它正試圖更新「關鍵字」值爲「a」的行中的「時間」。

我不知道爲什麼它說沒有這樣的列,因爲當我打印出數據列表時,有一行的「關鍵字」值等於「a」,或使其更簡單,如果沒有這樣的關鍵字,那麼代碼就不應該運行,因爲我已經在外面進行了一些驗證。

我也不知道它爲什麼說「時間=?」因爲當我打印出「時間」參數時,它有我想要的時間值,比如「20170724_154935」。

回答

2

「a」 是一個,因此它必須被封閉在字符串分隔符')。
像這樣:... WHERE keyword = 'a'

0

試試這個

ContentValues values = new ContentValues(); 
values.put(KEY_TIME, time); 
sqLiteDatabase.update(TABLE_NAME_SEARCH,values,KEY_KEYWORD + "=?",new String[]{keyword});