2012-03-02 3 views
0

DatabaseHelper 클래스에서이 방법을 고려간단한 커서 로깅 기능으로 전체 프로그램 동작을 변경할 수 있습니까?

public Cursor getRules() 
{ 
    SQLiteDatabase db=this.getReadableDatabase(); 
    Cursor cur=db.rawQuery("SELECT * from Rules",new String [] {}); 
    Log.d("Cursor Size", "" + cur.getCount()); 
    db.close(); 
    return cur; 
} 

그것은 커서를 반환하고 활동에, 나는 내가 DatabaseHelper 클래스 내에서 처리하는 전체 커서를 이동하고 있지 않다 (

Cursor ruleCursor=DatabaseHelper.getInstance(this).getRules(); 
    if(ruleCursor!=null) 
    { 
     RuleManager.getInstance(this,null).loadRules(ruleCursor); 
     ruleCursor.close(); 
    } 

처럼 소비 커서 대신 객체 목록 만 반환하는 경우) 문제는 getRules()에서 Log.d를 사용하지 않으면 전체 프로그램이 실패한다는 것입니다. "fillWindow()"문에 잘못된 문이 생기고 SQLite가 "Select"문에 아무 행이나 반환하지 않습니다.

cursor.getCount()에 대한 Log.d를 추가하면 모든 문제가 해결됩니다. 또한, 언급하기 위해,이 물건은 어제까지 잘 움직이고 있었고, 지난 저녁부터 이와같이 행동하고있다.

나는 뭔가를 놓친가요? 이 행동이 예상됩니까?

답변

1

// 여기 DatabaseHelper에 대해 걱정하지 마세요.

public Cursor getAllRows() { 
    Cursor c=getReadableDatabase().rawQuery("select * from RULES", null); 
    return c; 
} 

// 그리고 어디에서나 커서 (또는 커서를 "사용")를 사용합니다.

c=db.getAllRows(); 
startManagingCursor(c); 

희망이 있습니다.

관련 문제