SQLite Cursor行ID NULL - 经验丰富的Android开发人员

时间:2012-05-10 10:52:14

标签: android sqlite null android-cursor rowid

嘿我用光标查询数据库所有意思但是没有指向任何行i,e在调试时显示mrowId = null,count = 70(我使用内容值插入的是什么)但是当我写的时候cursor.moveToNext()或cursor.moveToFirst();它抛出光标索引超出绑定异常,而cursor.moveToNext()或cursor.moveToFirst()总是在eclipse中的watch表达式中返回.......我希望你理解这个问题可以帮助我解决问题.... ..感谢您在先进的建议中 为简单起见,我正在粘贴代码

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;

}
调试

布尔检查为真

2 个答案:

答案 0 :(得分: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();
       }

答案 1 :(得分: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()
}