Я использую базу данных для хранения даты и хочу, чтобы возвращался единственный столбец, на основе которого id указывается в where claus.Проверьте, есть ли у курсора результаты
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;
}
Этот код работает, если я использую серийный номер, который находится в базе данных, но это дает мне силы близко, когда я использую последовательный, которого нет в базе данных!
он говорит:
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
Так что мой вопрос: Как я могу проверить, есть ли результат? или мне нужно проверить, является ли серийный номер последовательным, который находится в базе данных?
Курсор не имеет строк, он пуст, но вышеприведенные тесты все равно не работают, почему? Есть ли еще проверка? Это действительно озадачивает. – Namratha
Примечание: это имеет побочный эффект установки курсора в первую позицию. Может возникнуть проблема при передаче объекта курсора, который был перенесен в определенную позицию на другую функцию, а затем, как ожидается, все еще будет в позиции :) –