2011-04-12 4 views
1

친구,행 삭제 후 SQLite 데이터 페치 문제가 발생합니까?

행을 삭제하려고 할 때 데이터베이스에서 모든 레코드를 가져 오려고 시도 할 때 예외가 발생하면 어떤 실수를 저지른 걸까요?

private static final String DATABASE_NAME = "example.db"; 
    private static final int DATABASE_VERSION = 1; 
    private static final String TABLE_NAME = "table1"; 

    private Context context; 
    private SQLiteDatabase db; 

public dbHelper(Context context) { 
     this.context = context; 
     OpenHelper openHelper = new OpenHelper(this.context); 
     this.db = openHelper.getWritableDatabase(); 
     this.insertStmt = this.db.compileStatement(INSERT); 
    } 


    public List<String> selectAll() { 
      List<String> list = new ArrayList<String>(); 
      Cursor cursor = this.db.query(TABLE_NAME, new String[] { "name" }, 
      null, null, null, null, "name desc"); 
      if (cursor.moveToFirst()) { 
      do { 
       list.add(cursor.getString(0)); 
      } while (cursor.moveToNext()); 
      } 
      if (cursor != null && !cursor.isClosed()) { 
      cursor.close(); 
      } 
      return list; 
     } 

     public int DeleteName(String name) 
     { 
      int rowsEffected = this.db.delete(TABLE_NAME,"name=?", new String[] {name}); 
      this.db.close(); 
      return rowsEffected; 
     } 

어떤 도움을 주시면 감사하겠습니다.

+0

어떤 예외가 있습니까? –

+0

어떤 종류의 예외가 있습니까? 삭제를 위해 1 개의 스레드를 사용하고 메소드를 얻습니까? – Maxim

+0

예 동일한 스레드 ... 같은 개체를 사용하여 함수를 삭제 selectAll .... 내가 그 문제를 내가 행을 삭제 한 후 새로운 참조를 받아야 할 것 같아요? – UMAR

답변

2

selectAll() 호출 전에 db를 열어 보셨습니까? 삭제 방법으로 폐쇄했습니다.

어쨌든 db는 작업하기 전에 db를 열고 작업이 끝나면 닫는 것이 좋습니다.