2015-11-04 103 views
0

我想基於第一個表的列更新第二個表中的一列。我想根據rid(細節表)和crid(記錄表)更新記錄表中的列標題,以詳細表的cid列的值。android.database.sqlite.SQLiteException:在「...」附近

public String updateId() { 

     String selectQuery = "UPDATE record SET lid = (SELECT detail.cid FROM detail WHERE detail.rid = record.crid" ; 

     SQLiteDatabase db = this.getWritableDatabase(); 
     Cursor cursor = db.rawQuery(selectQuery, null); 

     return null; 

    } 

日誌說:

android.database.sqlite.SQLiteException: near "crid" 

活動 - 上按一下按鈕,使用下面的代碼來更新表:

dh.updateId(); 
+0

爲什麼這被低估? – Sophie

+0

嘿檢查您的查詢是錯誤的可能是你錯過了東西prantheses或東西 – sud

+0

'蓋','cid','rid','crid',...爲什麼不使用**有意義的列名?否則,很難遵循邏輯。在將來,即使今天看起來你的眼睛(和你的眼睛)清楚,你在維護自己的邏輯方面也會遇到問題。 –

回答

3

你缺少你聲明一個右括號。

"UPDATE record SET lid = (SELECT detail.cid FROM detail WHERE detail.rid = record.crid)" ; 
                        ^
+0

我已經勾選您的答案爲有用的,並會在10分鐘內接受,現在我沒有得到問題,但仍然無法更新列,請檢查' – Sophie

+0

@Sophie不知道你的模式有什麼,我不能告訴你爲什麼聲明不符合你的期望。這可能是完美的陳述,但你的數據不是 - 我無法知道。另外,你不應該使用'rawQuery()'來執行更新語句。 'SQLiteDatabase'有一個'update()'方法。 – Karakuri

+0

好的,你可以告訴我執行rawQuery()的方式我想這是唯一的原因... – Sophie

相關問題