データベースを使用して日付を保存していて、idがwhere clausに指定されていることに基づいて1つの列が返されます。私は、データベース内にあるが、私は、データベースにないシリアルを使用していたときに、それは近い私に力を与えて、シリアルを使用している場合カーソルに結果があるかどうかを調べる
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
注:これには、カーソルを最初の位置に設定するという副作用があります。特定の位置に移動されたカーソルオブジェクトを別の関数に渡しても、まだその位置にあることが予想される場合は、問題が発生する可能性があります。 –