2011-02-12 6 views
1

현재 실제로 쿼리 한 데이터를 호출 할 때까지 아래 코드가 제대로 작동합니다. 또한 누군가가 WHERE 절을 사용하여 단일 ID를 쿼리하는 방법에 대한 예제를 제공 할 수 있습니다. 시도했지만 오류가 발생하기 전에 다시 꺼내려고 시도 할 수도 있습니다.데이터베이스에서 단일 행을 가져 오는 방법

모두 도움이됩니다. 최대

String questionval; 
    String answer1val; 
    String answer2val; 
    private final String SAMPLE_DB_NAME = "QnA"; 
    private final String SAMPLE_TABLE_NAME = "friends"; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     SQLiteDatabase db; 
     db = this.openOrCreateDatabase(SAMPLE_DB_NAME, MODE_PRIVATE, null); 

     db.execSQL("CREATE TABLE IF NOT EXISTS " + 
       SAMPLE_TABLE_NAME + 
       " (ID INT(3), Questions VARCHAR, Answer1 VARCHAR," + 
       " Answer2 VARCHAR, Answer3 VARCHAR," + 
       " Answer4 VARCHAR, CorrectAnswer INT(1), Reason VARCHAR);"); 

     db.execSQL("INSERT INTO " + 
       SAMPLE_TABLE_NAME + 
       " Values ('1','" + 
       "Question?'," + 
       "'Answer1'," + 
       "'Answer2'," + 
       "'Answer3'," + 
       "'Answer4'," + 
       "'2'," + 
       "'Reason');"); 

     Cursor c = db.rawQuery("SELECT * FROM " + 
       SAMPLE_TABLE_NAME , null); 


        questionval = c.getString(c.getColumnIndex("Question")); 
        answer1val = c.getString(c.getColumnIndex("Answer1")); 
        answer2val = c.getString(c.getColumnIndex("Answer2")); 

답변

4

당신은 당신의 행 액세스를 시도하기 전에 CursormoveToFirst()를 호출해야합니다.

+0

moveToFirst를 추가했지만 오류없이 실행할 수 없습니다. 이것이 당신이 의미 한 것입니다. \t c.moveToFirst(); \t questionval = c.getString (c.getColumnIndex ("Question"))); \t answer1val = c.getString (c.getColumnIndex ("Answer1"))); \t answer2val = c.getString (c.getColumnIndex ("Answer2"))); – Somk

+0

@Max : Eclipse에서 'adb logcat', DDMS 또는 DDMS 퍼스펙티브를 사용하여 LogCat을 검사하고 오류와 관련된 스택 추적을 확인하십시오. – CommonsWare

+0

@CommonsWare 조언을 주셔서 감사합니다. 나는 아주 새롭지 만 이것이 내가 찾은 것 같아. 필드 슬롯 0, -1에 대한 잘못된 요청 numRows = 11, numColumns = 8 – Somk

1

다음과 같이 값을 검색 할 수 있습니다.

Vector temp = null; 

// Fetch the values from database 
    Cursor c = sampleDB.rawQuery("SELECT * FROM " + Constants.TABLE_NAME, 
        null); 

// Extract the values 
      if (c != null) { 

       if (c.moveToFirst()) { 
        do { 

         temp = new Vector(); 
// Title was the field(column) name of the table 
        temp.addElement(c.getString(c.getColumnIndex("Title"))); 

// Description was the field(column) name of the table  
         temp.addElement(c 
           .getString(c.getColumnIndex("Description"))); 

        } while (c.moveToNext()); 
       } 
      } 
+0

확실히 while 루프는 필요 없습니다. 내가 단 하나의 가치만을 끌어오고 있다면. 이 예제에서 어떻게 결과를 다시 가져올 수 있습니까? – Somk

관련 문제