sqlite的光标窗口分配2048 KB失败 [英] Sqlite Cursor Window allocation 2048 kb failed

查看:132
本文介绍了sqlite的光标窗口分配2048 KB失败的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

 公开名单< D​​iagnosis_tble> GetAllPatientDetails()
     {
      清单< D​​iagnosis_tble> DiagnosistblList =新的ArrayList< D​​iagnosis_tble>();
      字符串selectQuery =SELECT * FROM+ TABLE_Diagnosistble +;
      SQLiteDatabase分贝= this.getWritableDatabase();
      光标光标= NULL;       {
        光标= db.rawQuery(selectQuery,NULL);      如果(cursor.getCount()大于0)
      {
        如果(cursor.moveToFirst())         做{
            Diagnosis_tble diagCreation_tble =新Diagnosis_tble();             diagCreation_tble.SetDiagnosisID(cursor.getString(0));
             diagCreation_tble.SetPName(cursor.getString(1));
             diagCreation_tble.SetHospitalNo(cursor.getString(2));
             diagCreation_tble.SetPGender(cursor.getString(3));
             diagCreation_tble.SetPacemaker(cursor.getString(4));
             diagCreation_tble.SetDiagType(cursor.getString(5));
             diagCreation_tble.SetP_Age(cursor.getString(6));
             diagCreation_tble.SetDeviceID(cursor.getString(7));
             diagCreation_tble.SetDiagStrtTime(cursor.getString(8));
             diagCreation_tble.SetDiagEndTime(cursor.getString(9));
             diagCreation_tble.SetDiagStatus(cursor.getString(10));
             diagCreation_tble.SetReportStatus(cursor.getString(11));
             diagCreation_tble.SetUploadStatus(cursor.getString(12));          DiagnosistblList.add(diagCreation_tble);         }而(cursor.moveToNext());          返回DiagnosistblList;
      }其他
      {
          返回null;
      }
    }
    最后
    {
        cursor.close();
    }
}

什么是错的这个code?

我得到这个异​​常:

 了java.lang.RuntimeException:无法启动活动
 ComponentInfo {com.abc.TestApp / com.abc.TestApp.LoadData}:
 android.database.CursorWindowAllocationException:2048 KB的光标窗口分配失败。


解决方案

我也遇到同样的问题,你。我所做的是我走遍了我的应用程序数据类和关闭那些没有关闭了所有其它游标对象。所以我想在你的应用程序同样也发生,打开你的数据类和发现,并没有关闭光标和关闭它们。

  public List<Diagnosis_tble> GetAllPatientDetails()
     {
      List<Diagnosis_tble> DiagnosistblList = new   ArrayList<Diagnosis_tble>();  
      String selectQuery = "SELECT  * FROM " + TABLE_Diagnosistble + "";  
      SQLiteDatabase db = this.getWritableDatabase();
      Cursor cursor = null;

       {  
        cursor = db.rawQuery(selectQuery, null);

      if(cursor.getCount() > 0)
      {
        if (cursor.moveToFirst()) 

         do{     
            Diagnosis_tble  diagCreation_tble = new Diagnosis_tble(); 

             diagCreation_tble.SetDiagnosisID(cursor.getString(0));
             diagCreation_tble.SetPName(cursor.getString(1));
             diagCreation_tble.SetHospitalNo(cursor.getString(2));
             diagCreation_tble.SetPGender(cursor.getString(3));
             diagCreation_tble.SetPacemaker(cursor.getString(4));
             diagCreation_tble.SetDiagType(cursor.getString(5));
             diagCreation_tble.SetP_Age(cursor.getString(6));
             diagCreation_tble.SetDeviceID(cursor.getString(7));
             diagCreation_tble.SetDiagStrtTime(cursor.getString(8));
             diagCreation_tble.SetDiagEndTime(cursor.getString(9));
             diagCreation_tble.SetDiagStatus(cursor.getString(10));
             diagCreation_tble.SetReportStatus(cursor.getString(11));
             diagCreation_tble.SetUploadStatus(cursor.getString(12));

          DiagnosistblList.add(diagCreation_tble); 

         }while (cursor.moveToNext());

          return DiagnosistblList; 
      }else
      {
          return null;
      } 
    }
    finally
    {
        cursor.close();
    }
}  

what is wrong in this code?

I am getting this Exception:

 java.lang.RuntimeException: Unable to start activity 
 ComponentInfo{com.abc.TestApp/com.abc.TestApp.LoadData}:
 android.database.CursorWindowAllocationException: Cursor window allocation of 2048 kb failed. 

解决方案

I have faced the same trouble as you. What I did is I went all over my application data classes and close all other cursor objects which were not closed. so I guess same happen in your application also, open your data classes and find the cursors that didn't closed and close them

这篇关于sqlite的光标窗口分配2048 KB失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆