gpt4 book ai didi

Android如何查询android中巨大的数据库(光标大小限制为1MB)

转载 作者:太空宇宙 更新时间:2023-11-04 12:20:32 28 4
gpt4 key购买 nike

我正在开发一个需要在某些时候进行查询的应用程序,一个包含超过 4k 行的数据库,每行有 90 个字段(字符串)。问题是,如果我从数据库中 select * ,我的光标就会变得非常大(超过 4MB)。并且android中的光标限制为1MB。

我该如何解决这个问题,或者解决这个问题最优雅的方法是什么?是否可以将数据库分割成更小的 block 并查询它们?

最佳答案

我找到了一种方法来处理这个问题,我想与所有需要它的人分享。

   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 行。

谢谢,阿克德

关于Android如何查询android中巨大的数据库(光标大小限制为1MB),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38887855/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com