2017-04-25 9 views
-2

두 개의 버튼 중 하나는 데이터를 DB에 추가하고 다른 하나는 모든 데이터를 가져옵니다. Table은 테이블 (Table.TABLE_NAME == "table")에 대한 정보가 들어있는 클래스입니다. 그러나 커서는 항상 비어 있습니다. 나는이 db.query (Table.TABLE_NAME, null, null, null, null, null, null)를 시도했지만 작동하지도 않았다.커서가 비어 있습니다.

public void onClick(View v) { 
      DBHelper dbHelper = new DBHelper(this); 
      SQLiteDatabase db = dbHelper.getWritableDatabase(); 
      Cursor cursor = null; 
      switch (v.getId()){ 
       case R.id.btnAdd: 
        ContentValues contentValues = new ContentValues(); 
        contentValues.put("Name",etName.getText().toString()); 
        contentValues.put("Surname",etSurname.getText().toString()); 
        contentValues.put("Age",etAge.getText().toString()); 
        contentValues.put("City",etCity.getText().toString()); 
        db.insert(Table.TABLE_NAME,null,contentValues); 
        Log.d(TAG,etName.getText().toString() +" " + etSurname.getText().toString() +" " + etAge.getText().toString()+" " + etCity.getText().toString()); 
        break; 
       case R.id.btnSearch: 
        cursor = db.rawQuery("select * from "+Table.TABLE_NAME,null); 
        break; 
      } 
      if (cursor != null) { 
       if(cursor.moveToFirst()) { 
        String str; 
        do { 
         str = ""; 
         for (String cn : cursor.getColumnNames()) { 
          str = str.concat(cn + " = " + cursor.getString(cursor.getColumnIndex(cn)) + "; "); 
         } 
        } while (cursor.moveToNext()); 
       } 
       cursor.close(); 
      }else { 
       Log.d(TAG,"null"); 
      } 
      db.close(); 
     } 
+0

물론 앱이 라인'의 경우 R.id.btnSearch'에 도달? 테이블에 뭔가있어? 테이블 정의는 어떻게 생겼습니까? – Trinimon

답변

0

커서는 초기화하지 않으므로 항상 null입니다. - 그렇지 않으면 도달 할 수없는

 Cursor cursor = db .query(TABLE_NAME, columns, null, null, null, null, null); 

하지만 당신의 스위치 블록 외부 : 이런 식으로 뭔가를 시도 .

디버거를 사용하면 실제로 일어나는 일에 대해 알아야 할 모든 것을 알려줍니다.

https://github.com/square/sqlbrite을 사용할 수도 있습니다. 다양한 경우에 데이터를 동기화하는 데 도움이됩니다.

0

dbHelper.getReadableDatabase()을 사용하면 데이터베이스에서 데이터를 가져올 수 있습니다.

이 시도 :

 case R.id.btnSearch: 
       db = dbHelper.getReadableDatabase(); 
       cursor = db.rawQuery("select * from "+Table.TABLE_NAME,null); 
       break; 
+1

'rawQuery'의 출력을 변경하는 경우는 거의 없을 것입니다. – Trinimon