6

データベースを使用して日付を保存しており、where 句で指定された ID に基づいて返される単一の列が必要です。

    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

私の質問は次のとおりです。結果があるかどうかを確認するにはどうすればよいですか? または、指定されたシリアルがデータベースにあるシリアルかどうかを確認する必要がありますか?

4

4 に答える 4

4

よく見ると、エラーはSQLに障害があることです。を列として読み取りgます。そのようにアポストロフィで囲む必要があります'g'

あなたの場合、カーソルを取得する行は次のようになります。

Cursor c = ourDatabase.query(DATABASE_TABLE, columns, "serial = '" + serial + "'",
    null, null, null, null);

カーソルに結果がないかどうかの確認については、SamirMangroliyaの回答を参照してください。

于 2012-04-11T15:06:30.610 に答える