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 回答