2013-05-29 59 views
6

当我执行这个查询我得到'android.database.sqlite.SQLiteException:没有这样的列'错误是什么?android.database.sqlite.SQLiteException:没有这样的列

public Cursor Getupdate(String rid) throws SQLException 
     { 

Cursor m1Cursor = db.rawQuery("SELECT _id FROM Meeting where meet="+rid , null); 
    if (m1Cursor != null) {   
     if(m1Cursor.getCount() > 0) 
     { 

      m1Cursor.moveToFirst(); 
     } 
    } 
return m1Cursor; 
} 

logcat的

05-28 01:22:27.999: E/AndroidRuntime(1411): FATAL EXCEPTION: main 
05-28 01:22:27.999: E/AndroidRuntime(1411): android.database.sqlite.SQLiteException: no such column: ttyuhomk: , while compiling: SELECT _id FROM Meeting where meet=rage 

回答

24

对于字符串数据类型总是用这样引号 ' “+摆脱+”'”因为RID是字符串你得到错误。

您应该使用+摆脱只有摆脱类型为int。

+0

你救了我! thnxx亲爱的! –

16

你需要使用单引号(')在Where子句检查..喜欢

db.rawQuery("SELECT _id FROM Meeting where meet='"+rid+"'" , null); 
+0

WEL如图所示。现在如果rid是一个int数据类型呢?我会把它写为“SELECT _id FROM Meeting where meet =”+ rid – user3833732

4

或者,更好的是,使用PreparedStatement和绑定你变量。它会逃避字符串和适合你的日期。它也会帮助解决SQL注入问题。

还有人不知道这件事吗?

5

您也可以使用这样的。

db.rawQuery("SELECT _id FROM Meeting where meet=?" , 
      new String [] {rid}); 

这也将解决SQL注入的问题。

+1

'?'参数很好,只是没有超过'String.valueOf(String)' – laalto

+1

哦!抱歉。实际上,它好像是这样的db.rawQuery(“SELECT _id FROM Meeting where meet =?”,new String [] {rid});感谢您指出我的代码。 –

+0

很棒的回答。只需要一些解释,说明它如何帮助解决SQL注入问题。 – VVB

相关问题