Używam bazy danych do przechowywania daty i chcę zwrócić pojedynczą kolumnę na podstawie tego, który id jest podany w miejscu claus.Sprawdź, czy kursor ma wyniki
public String getPmax(String serial) {
String[] columns = new String[]{KEY_SERIAL, KEY_PMAX};
Cursor c = ourDatabase.query(DATABASE_TABLE, columns, "serial = " + serial,
null, null, null, null);
String result = "nothing found";
if(c != null) {
int iPmax = c.getColumnIndex(KEY_PMAX);
c.moveToFirst();
result = c.getString(iPmax);
}
return result;
}
Ten kod działa, jeśli używam seryjny, który znajduje się w bazie danych, ale to daje mi siłę, gdy blisko używam seryjny, który nie znajduje się w bazie danych!
mówi:
04-11 16:31:19.423: E/AndroidRuntime(21226): java.lang.RuntimeException: Unable to start activity ComponentInfo{nl.janjanus.solardetect/nl.janjanus.solardetect.DatabaseView}: android.database.sqlite.SQLiteException: no such column: g: , while compiling: SELECT serial, pmax FROM SolareCel WHERE serial = g
Więc moje pytanie brzmi: w jaki sposób mogę sprawdzić, czy jest wynik? lub czy muszę sprawdzić, czy dany serial jest numerem seryjnym, który znajduje się w bazie danych?
Kursor nie ma wierszy, jest pusty, ale powyższe testy wciąż kończą się niepowodzeniem, dlaczego tak jest? Czy jest jeszcze jakiś inny czek? To naprawdę kłopotliwe. – Namratha
Uwaga: ma to skutek uboczny polegający na ustawieniu kursora na pierwszej pozycji. Może powodować problem, jeśli przekazuje obiekt kursora, który został przeniesiony do określonej pozycji, do innej funkcji, a następnie oczekuje, że nadal będzie na pozycji :) –