1

テーブルを作成し、次のようにカーソルを使用してテーブルからデータを取得しようとしました:

public Cursor getcontent() {
    Cursor d = database.query(DatabaseHandler.Table_Name2,allColumns,selection, null, null,null,null); 
    return d;
}
Cursor r = X.getcontent();
if (r.getCount() > 0) {
    r.moveToFirst();
    do {
        String id = r.getString(r.getColumnIndex("content_id"));
        al.add(id);
        MainActivity.tt1.append("\n");  
        MainActivity.tt1.append(id);   
    } while (r.moveToNext()==true);
        r.close();
    } else {
        Log.i("TAG"," No value found");
    }      
}

TextViewフェッチされたデータを確認するために結果を表示しています。私の問題は、このコードを実行すると、取得したデータが表示される場合と表示TextViewされない場合があることです。50:50 の比率です。私によると、データが取得されるたびに取得された値が表示されるはずです。ここで何が問題なのかわからないのですが、ここで何が問題なのか教えてもらえますか?

4

2 に答える 2

1

取得している Cursor が Null かどうかを確認します。はいの場合、カーソルのカウントは何ですか。以下の方法でそれを行うことができます。

Cursor r = X.getcontent();
if ((r != null) && (r.getCount() > 0)) {
    r.moveToFirst();
    do {
        String id = r.getString(r.getColumnIndex("content_id"));
        al.add(id);
        MainActivity.tt1.append("\n");  
        MainActivity.tt1.append(id);   
    } while (r.moveToNext());
    r.close();
} else {
    Log.i("TAG"," No value found inside Cursor");
}  
于 2013-02-23T05:57:57.573 に答える
0

このようにしてみてください

Cursor r = X.getcontent();
try {
    if (r.moveToFirst()) {
        do {
            String id = r.getString(r.getColumnIndex("content_id"));
            al.add(id);
            MainActivity.tt1.append("\n");  
            MainActivity.tt1.append(id); 
        } while (r.moveToNext());
    }
} finally {
    if(r!=null) {
        r.close();
    }
}
于 2013-02-23T06:25:36.677 に答える