-2

次のような選択クエリを記述したデータベース ヘルパー クラスを作成しました。

//select statement
        public String select(String question_id) {

        SQLiteDatabase db = this.getWritableDatabase(); 


        String sql = "SELECT answer FROM answers WHERE _id="+question_id;
         Log.i("select: ",sql);

        db.close();
        return sql;

}

これは、アクティビティからselectメソッドを呼び出す方法です:

//select statement to retrive previous answer from database
                DataBaseHelper db = new DataBaseHelper(ExamActivity.this);
                ContentValues values = new ContentValues();
                try {
                 db.createDataBase();
                 chk_content = db.select(question_sr_no.getText().toString()); 

                } catch (IOException e1) {
                 e1.printStackTrace();
                  }
                db.close();

しかし、logcatの出力は次のとおりです。

SELECT answer FROM answers WHERE _id=1.

クエリが結果を返さず、代わりにクエリ文字列を返すのはなぜですか?

前もって感謝します!

4

3 に答える 3

2

を使用してクエリを実行するのを忘れていますdb.rawQuery。メソッドを次のように変更します:

public String select(String question_id) {
   SQLiteDatabase db = this.getWritableDatabase(); 
   String str_answer="";
   String sql = "SELECT answer FROM answers WHERE _id="+question_id;
   Log.i("select: ",sql);
   Cursor cursor = db.rawQuery(sql, null); //<< execute here 
   cursor.moveToFirst();
   if (cursor.getCount()>0) {
      str_answer=cursor.getString(cursor.getColumnIndex("answer");
    }
  return str_answer;
}
于 2013-03-19T12:49:30.983 に答える
0

ロギングのみであり、クエリメソッドを呼び出していません。

于 2013-03-19T12:49:11.717 に答える
0

select メソッドは、文字列を作成して文字列を返すだけです。独自のコードを見てください。

 //select statement
    public String select(String question_id) {

    SQLiteDatabase db = this.getWritableDatabase(); 

    String sql = "SELECT answer FROM answers WHERE _id="+question_id; //you return this. 
     Log.i("select: ",sql);

    db.close();
    return sql;

}

あなたが求めているのは、データベースを開いて再度閉じるだけでなく、実際にデータベースにクエリを実行することだと思います。

于 2013-03-19T12:50:33.860 に答える