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);
}
試試這個...
添加回答
舉報