2 回答
TA贡献1828条经验 获得超13个赞
你做错的是你检查Cursor返回的对象是否rawQuery()是null.
rawQuery()返回 a Cursor,它可能为空(没有任何行),但它永远不可能是null。您可以通过检查其方法
来检查是否有任何行。 也不要使用 sql 语句的参数串联。这是不安全的。 使用占位符和第二个参数来传递参数。 所以改成这样:CursormoveToFirst()
?rawQuery()
public Cursor finddata(String name, int ida, int guess){
String sql = "SELECT NAME1 FROM Capital_Names " +
"WHERE ID = ? AND ? IN (NAME1, NAME2, NAME3, NAME4, NAME5)";
return db.rawQuery(sql, new String[] {ida, name});
}
您的代码中似乎没有使用guess的参数finddata(),因此您可以将其删除。
另外您确定只想返回该列NAME1吗?您可以将其替换为"SELECT * FROM..."以返回所有列。
TA贡献1798条经验 获得超3个赞
public Cursor finddata(String name,int ida, int guess){
String Query = "SELECT NAME1 FROM Capital_Names
WHERE ID = '" + ida + "'
AND
(
NAME1='" +name+ "' OR NAME2='" +name+ "' OR NAME3='" +name+ "' OR
NAME4='" +name+ "' OR NAME5='" +name+ "')"
;
return db.rawQuery(Query,null);
}
试试这个...
添加回答
举报