2014-09-30 51 views
0

我有以下查询:没有这样的表时,表明确有 - SQ-精简版

cursor = helper.getReadableDatabase().rawQuery("select _id, Likert-Skala from "+inAd+" where Name like ?" , 
      new String[] { "%" + str2 + "%" }); 

现在,我得到了李克特斯卡拉一个“没有这样的表”的错误。 但是,如果我这样做:

Cursor c = helper.getReadableDatabase().rawQuery("SELECT * FROM "+inAd+" ", null); 
    DatabaseUtils.dumpCursor(c); 

然后,我的结果,例如:

09-30 18:42:11.212: I/System.out(907): Likert-Skala=1.63 

所以该表是明显存在,并没有错字。 任何人有想法?

+2

我认为问题是你的列名有一个连字符,这可能是SQLite解释为两个其他术语之间的减法。 – Karakuri 2014-09-30 23:03:35

+0

如果是这样,那么为什么是错误消息:“没有这样的列:Likert Skala”?当我要求所有的专栏时,“Likert-Skala”出来很好? – newnewbie 2014-09-30 23:05:06

+0

我认为你传递错误的字符串应该是:“SELECT _id FROM Likert-Skala”+ inAd +“WHERE Name like?” – Juniar 2014-09-30 23:35:06

回答

1

您可能需要删除“ - ”号。否则这应该是罚款:

String sql = "SELECT _id FROM Likert-Skala WHERE Name like ?"; 
String[] str = {"%" + str2 + "%"}; 
Cursor cursor = this.helper.getReadableDatabase().rawQuery(sql, str); 
+0

Karakuri是第一个正确的。 – newnewbie 2014-10-01 01:05:31

+0

@newnewbie我明白了Likert_Skala对“_”符号有效,或者[Likert-Skala]对“[..]”括号有效。这里是链接:http://stackoverflow.com/questions/3694276/what-are-valid-table-names-in-sqlite – Juniar 2014-10-01 01:23:52