+-

我正在开发一个必须在某个时候查询的应用程序,一个行超过4k的数据库,每行有90个字段(字符串).问题是如果我从数据库中选择*,我的光标变得非常大(超过4MB).并且 android中的光标限制为1MB.
我该如何解决这个问题,或者解决这个问题的最优雅方法是什么?
可以将数据库拆分成较小的块并查询它们吗?
我该如何解决这个问题,或者解决这个问题的最优雅方法是什么?
可以将数据库拆分成较小的块并查询它们吗?
谢谢,
Arkde
最佳答案
我找到了解决这个问题的方法,我希望与所有需要它的人分享.
int limit = 0;
while (limit + 100 < numberOfRows) {
//Compose the statement
String statement = "SELECT * FROM Table ORDER someField LIMIT '"+ limit+"', 100";
//Execute the query
Cursor cursor = myDataBase.rawQuery(statement, null);
while (cursor.moveToNext()) {
Product product = new Product();
product.setAllValuesFromCursor(cursor);
productsArrayList.add(product);
}
cursor.close();
limit += 100;
}
//Compose the statement
String statement = "SELECT * FROM Table ORDER someField LIMIT '"+ (numberOfRows - limit)+"', 100";
//Execute the query
Cursor cursor = myDataBase.rawQuery(statement, null);
while (cursor.moveToNext()) {
Product product = new Product();
product.setAllValuesFromCursor(cursor);
productsArrayList.add(product);
}
cursor.close();
主要思想是分割数据,因此您可以使用应该使用的光标.如果您有索引表,它在2秒内工作5k行.
谢谢,
Arkde
点击查看更多相关文章
转载注明原文:Android如何在android中查询庞大的数据库(游标大小限制为1MB) - 乐贴网