[SQL] CursorWindow를 할당 할 수 없습니다
SQLCursorWindow를 할당 할 수 없습니다
내 안드로이드 응용 프로그램에서 sqlite3를 데이터베이스에서 운영하고있다. 난 그냥 20 만 행과 14 열이 전 인구가 데이터베이스에서 읽습니다. 항목은 단어입니다. 모든 컬럼의 데이터 유형은 텍스트입니다. 11 글자로 단어를 최대 쿼리 (예. 포기는) 잘 작동합니다. 그러나 12 이상 (예를 들면. 각화)에 대한 응용 프로그램이 충돌합니다. 여기에 로그 캣은 다음과 같습니다
Could not allocate CursorWindow '//data//data//com.example.myapp//databases//database.sqlite' of size 2097152 due to error -12.
threadid=11: thread exiting with uncaught exception (group=0x40adf9f0)
FATAL EXCEPTION: Thread-2883
android.database.CursorWindowAllocationException: Cursor window allocation of 2048 kb failed. # Open Cursors=861 (# cursors opened by this proc=861)
at android.database.CursorWindow.<init>(CursorWindow.java:104)
at android.database.AbstractWindowedCursor.clearOrCreateWindow(AbstractWindowedCursor.java:198)
at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:162)
at android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:156)
at android.database.AbstractCursor.moveToPosition(AbstractCursor.java:161)
at android.database.AbstractCursor.moveToFirst(AbstractCursor.java:201)
at com.example.myapp.MainActivity.query(MainActivity.java:815)
at com.example.myapp.MainActivity$2.run(MainActivity.java:356)
at java.lang.Thread.run(Thread.java:856)
암호:
query = "select * from words where col_1 = \"" + (myWord)+ "\";";
cursor = database.rawQuery(query, null);
if (cursor != null)
cursor.moveToFirst(); // line 815
if (!cursor.isAfterLast()) {
do {
for (i = 1; i < cursor.getColumnCount(); i++) {
temp = cursor.getString(i);
//other stuff
}
} while (cursor.moveToNext());
cursor.close();
}
그래서 오류 의미합니까 왜 응용 프로그램의 충돌은?
해결법
-
==============================
1.오류 -12 수단이 누출 커서. Pls는 가까운 그것은 다음과 같은 시도 :
오류 -12 수단이 누출 커서. Pls는 가까운 그것은 다음과 같은 시도 :
try {....} finally { cursor.close();}
-
==============================
2.나는 루프에서 quering했다. 그리고 루프 내에서 커서를 닫고 외부의 문제가 해결되지.
나는 루프에서 quering했다. 그리고 루프 내에서 커서를 닫고 외부의 문제가 해결되지.
-
==============================
3.안드로이드 커서 모두를 메모리에 쿼리 결과를 읽고, 해당 데이터 1 메가 바이트 제한이 있습니다.
안드로이드 커서 모두를 메모리에 쿼리 결과를 읽고, 해당 데이터 1 메가 바이트 제한이 있습니다.
데이터의 양이 가능성이 앱이 모바일 장치에서 느리게 실행 만들 수 있기 때문에이 제한은 선택되었다.
당신이해야 가능한 경우 :
from https://stackoverflow.com/questions/17495713/could-not-allocate-cursorwindow by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 데이터베이스 필드에서 특수 문자를 제거 (0) | 2020.07.05 |
---|---|
[SQL] CSV 또는 Excel로 SQL 쿼리 결과 내보내기 (0) | 2020.07.05 |
[SQL] 윈도우 함수의 FILTER 절에서 현재 행을 참조하기 (0) | 2020.07.05 |
[SQL] SQL : 마 당신은 많은-많은 테이블의 자동 증가 기본 키를해야합니까? (0) | 2020.07.05 |
[SQL] 기본 키가없는 경우 중복 레코드가 SqlBulkCopy의 삽입되지 않도록하는 방법 (0) | 2020.07.05 |