+-
Android如何在android中查询庞大的数据库(游标大小限制为1MB)
我正在开发一个必须在某个时候查询的应用程序,一个行超过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) - 乐贴网