Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android光标未关闭错误_Android_Cursor - Fatal编程技术网

android光标未关闭错误

android光标未关闭错误,android,cursor,Android,Cursor,我正在数据库适配器中使用以下例程。每次调用它时,都会创建一个错误,“应用程序未关闭光标” 我不知道如何关闭光标,因为我没有在调用例程中打开它。这在列表中的显示适配器中使用 我称之为: int cnt=mDbHelper.dbio_rcount(“从mytable中选择count(*),其中field1='V') 我猜您在调用mCursor.moveToFirst()时遇到异常,这意味着您的应用程序在mCursor.close()发生之前崩溃。。 通常我要做的是在调用moveToFirst()之前

我正在数据库适配器中使用以下例程。每次调用它时,都会创建一个错误,“应用程序未关闭光标”

我不知道如何关闭光标,因为我没有在调用例程中打开它。这在列表中的显示适配器中使用

我称之为:

int cnt=mDbHelper.dbio_rcount(“从mytable中选择count(*),其中field1='V')


我猜您在调用mCursor.moveToFirst()时遇到异常,这意味着您的应用程序在mCursor.close()发生之前崩溃。。 通常我要做的是在调用moveToFirst()之前检查mCursor.getCount()>0……但这只是我的问题……我建议:

 public int dbio_rcount(String p_query)
 {
       int v_ret = 0 ;
       Cursor mCursor = null ;

       try
       {
           mCursor  = mDb.rawQuery(p_query, null);
           if (mCursor != null && mCursor.getCount() > 0)
           {
              mCursor.moveToFirst();
              v_ret  = mCursor.getInt( 0 );
           }
       } catch (SQLException e) {
         Log.e(TAG, "sql exception in dbio_count", e);            
       } catch(Exception ex) {
         Log.e(TAG, "other exception in dbio_count", ex);
       } finally {
         if (mCursor != null) {
           mCursor.close();
         }
       }

       return v_ret ;
    }

我猜您在调用mCursor.moveToFirst()时遇到异常,这意味着您的应用程序在mCursor.close()发生之前崩溃。。 通常我要做的是在调用moveToFirst()之前检查mCursor.getCount()>0……但这只是我的问题……我建议:

 public int dbio_rcount(String p_query)
 {
       int v_ret = 0 ;
       Cursor mCursor = null ;

       try
       {
           mCursor  = mDb.rawQuery(p_query, null);
           if (mCursor != null && mCursor.getCount() > 0)
           {
              mCursor.moveToFirst();
              v_ret  = mCursor.getInt( 0 );
           }
       } catch (SQLException e) {
         Log.e(TAG, "sql exception in dbio_count", e);            
       } catch(Exception ex) {
         Log.e(TAG, "other exception in dbio_count", ex);
       } finally {
         if (mCursor != null) {
           mCursor.close();
         }
       }

       return v_ret ;
    }

看起来像是moveToFirst()不应该抛出异常..而且我没有使用rawQuery..您可以尝试一下,看看它是否有帮助。您确定这是未关闭的光标吗?我认为您对异常的看法是正确的,但它发生在
rawQuery
,而不是
moveToFirst
。有一个try/catch围绕
rawQuery
的问题at抛出抛出的异常。您的修复程序应该可以以任何方式运行。但是,我会在
mCursor.close()
之前添加一个空检查。如果
rawQuery
抛出
mCursor
将在
finally
块中为空。看起来像moveToFirst()不应该抛出异常..而且我没有使用rawQuery..您可以尝试一下,看看它是否有帮助。您确定这是未关闭的光标吗?我认为您对异常的看法是正确的,但它发生在
rawQuery
,而不是
moveToFirst
。有一个try/catch围绕
rawQuery
的问题at抛出抛出的异常。您的修复程序应该可以以任何方式运行。但是,我会在
mCursor.close()
之前添加一个空检查。如果
rawQuery
抛出
mCursor
将在
finally
块中为空。