我是Android的菜鸟,我试图在我的数据库上运行一个查询,从我的表中返回一个字符串值。我通过使用long选择我的行id在一个查询中成功完成了此操作。如图所示:
public String getHotness(long l) throws SQLException{
// TODO Auto-generated method stub
String[] columns = new String[]{ KEY_ROWID, KEY_NAME, KEY_HOTNESS };
Cursor c = ourDatabase.query(DATABASE_TABLE, columns, KEY_ROWID + "=" + l, null, null, null, null);
if (c != null){
c.moveToFirst();
String hotness = c.getString(2);
return hotness;
}
c.close();
return null;
}
但现在我必须使用字符串查询另一个表,但是当我执行此查询时,我得到一个SQLException。
public String getSingleQty(String aCoin) throws SQLException{
// TODO Auto-generated method stub
String[] columns = new String[]{ KEY_ROWID, KEY_NAME, KEY_QUANTITY, KEY_OUNCES, KEY_VALUE};
Cursor c = ourDatabase.query(DATABASE_TABLE, columns, KEY_NAME + "=" + aCoin, null, null, null, null); //<--this causes exception
String result = "";
if (c != null){
c.moveToFirst();
result= c.getString(2);
c.close();
return result;
}
c.close();
return null;
我不明白为什么会这样。我对两个表使用了相同的格式。非常感谢任何帮助。
答案 0 :(得分:3)
由于aCoin作为字符串传递给查询,因此必须用撇号包装。更正了代码片段:
Cursor c = ourDatabase.query(DATABASE_TABLE, columns, KEY_NAME + "='" + aCoin + "'", null, null, null, null);
或(如果语法最适合你)尝试这样:
Cursor c = ourDatabase.query(DATABASE_TABLE, columns, KEY_NAME + "=?", new String[] {aCoin}, null, null, null);