2012-03-02 7 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(); 
    } 

のようにそれを消費しますカーソルの代わりにObjectsのリストを返す)、問題は、私がLogRegをgetRules()で使わないと、プログラム全体が失敗するということです。私は "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); 

希望がありますように!

関連する問題