Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Android应用程序上使用DBHelper(SQLite)的好做法是什么_Java_Android_Database_Sqlite - Fatal编程技术网

Java 在Android应用程序上使用DBHelper(SQLite)的好做法是什么

Java 在Android应用程序上使用DBHelper(SQLite)的好做法是什么,java,android,database,sqlite,Java,Android,Database,Sqlite,我有一个DatabaseHelper类,它扩展了SQLiteOpenHelper,使用DBHelper执行数据提取的好做法是什么 在我的DatabaseHelper类中,我有一个方法可以帮助我检索查询结果,如“Select*FROM…”。结果将被许多其他类使用 例如: Cursor getAllWhitelist(){ SQLite Database db=this.getWritableDatabase(); Cursor cur = db.rawQuery("Select

我有一个DatabaseHelper类,它扩展了SQLiteOpenHelper,使用DBHelper执行数据提取的好做法是什么

在我的DatabaseHelper类中,我有一个方法可以帮助我检索查询结果,如“Select*FROM…”。结果将被许多其他类使用

例如:

Cursor getAllWhitelist(){
     SQLite Database db=this.getWritableDatabase();
     Cursor cur = db.rawQuery("Select * from WhiteList");
     return cur;
}
我应该在这个阶段返回游标吗?推荐吗?或者我应该返回ArrayList之类的东西


你们是怎么做到的?

最好的做法是创建一个结果列表并关闭光标和数据库,以尽量减少连接时间。否则,由于某些限制,您可以关闭连接。这对结果列表不利。

我使用的是,将值存储在某个对象或对象的某个数组列表中,然后返回该值
参考此


感谢@Austin Mahoney,他告诉我们,如果我们使用
startManagingCursor
,我们可以返回游标。此方法允许“活动”根据“活动”的生命周期为您管理给定游标的生命周期。

如果您需要将游标用于ListView适配器,是否会出现例外情况?谷歌的例子演示了如何使用游标来实现这一点。问题是,游标不必连接到数据库。Cursor是一个通用接口,用于从任何内容提供商获取一些数据。@Thomas您愿意分享该示例的一个片段吗?可以在Google的一个教程中看到该示例,请参阅fillData()函数。它们返回项目的游标,对其进行管理,然后将其提供给SimpleCursorAdaptor。@Vladimir您假设结果列表很小,如果不是这样,则将浪费资源将整个列表读取到内存中。返回游标很好,您只需确保添加一个
startManagingCursor(游标)
将光标传回活动后,立即调用该活动。如果要在
SimpleCorsorAdapter
中使用光标,则需要一个未关闭的光标。感谢@Austin Mahoney提供此信息。我已经编辑了我的答案。