2015-11-04 46 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

相关问题