Sto utilizzando un database per memorizzare la data e voglio che venga restituita una singola colonna in base alla quale viene indicato id nel claus dove.Verifica se il cursore ha risultati
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;
}
questo codice funziona se uso un serial che è nel database ma mi dà una forza vicina quando sto usando una serie che non è nel database!
dice:
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
Quindi la mia domanda è: come faccio a controllare se c'è risultato? o devo controllare se il seriale dato è un seriale che si trova nel database?
Il cursore non ha righe, è vuoto ma i test precedenti non riescono ancora, perché? C'è qualche altro assegno? Questo è veramente sconcertante. – Namratha
Nota: questo ha l'effetto collaterale di impostare il cursore sulla prima posizione. Può causare un problema se si passa un oggetto del cursore che è stato spostato in una posizione specifica a un'altra funzione e quindi si prevede di essere ancora nella posizione :) –