0

ちょっと私はどうしてもクエリデータベースにカーソルを使用していますが、はどの行も指していません。つまり、デバッグ中はmrowId = null、count = 70(コンテンツ値を使用して挿入したものがあります)を表示しますが、cursor.moveToNextを書き込むと()またはcursor.moveToFirst(); cursor.moveToNext()またはcursor.moveToFirst()が常にEclipseのウォッチ式で返される間、カーソルインデックスが範囲外の例外をスローします.......問題の解決に役立つ問題を理解していただければ幸いです。 ..簡単にするために高度な提案をありがとう
私はコードを貼り付けています

public Cursor getDataBaseCursor(String tableName) {
    Cursor cursor = null;
    try {
        if (mainDatabase.isOpen()) {
            String countQuery = "SELECT  * FROM " + tableName;
            cursor = mainDatabase.rawQuery(countQuery, null);
            // cursor = mainDatabase.query(tableName, null, null, null,
            // null, null, null);
            if (cursor != null) {
                **boolean check =cursor.moveToNext();**
                return cursor;
            }

        } else {
            createOrOpenDatabase(databaseName);
            cursor = mainDatabase.query(tableName, null, null, null, null, null, null);
            if (cursor != null) {
                cursor.moveToFirst();
                return cursor;
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
        cursor = mainDatabase.query(tableName, null, null, null, null, null, null);
        if (cursor != null) {
            cursor.moveToNext();
            return cursor;
        }

    }
    return null;

}

デバッグ中のブールチェックはtrueです

4

2 に答える 2

0

このコードが役立つかもしれません、

public Cursor getDataBaseCursor(String tableName) {
    Cursor cursor = null;
    try {
        if (mainDatabase.isOpen()) {
            String countQuery = "SELECT  * FROM " + tableName;
            cursor = mainDatabase.rawQuery(countQuery, null);

            int fieldValue; 
            if(cursor.getCount()>0){
                 cursor.moveToFirst();
                 do
             {
                    fieldValue=cursor.getInt(cursor.getColumnIndex("tbl_FieldName"));   
                    System.out.println("The Value of fatched field :"+fieldValue);
                 }while(cursor.moveToNext());
        cursor.close();
            }

          System.out.println("The Value of field :"+fieldValue);
       }
       catch (Exception e)
       {
     e.toString();
       }
于 2012-05-10T11:17:34.093 に答える
0

それ以外の

if (cursor != null) {
**boolean check =cursor.moveToNext();**
return cursor;

試す

Log.d(TAG, "cursor.getCount()= " + String.valuseOf(cursor.getCount))
if(cursor.getCount > 0) {
    cursor.moveToFirst()
}
于 2012-05-10T11:26:06.987 に答える