在Android中以更快的方式从DB中检索值

在Android中以更快的方式从DB中检索值,android,Android,我正在尝试从DB中检索值并在listView中显示它们。我创建了一个模型,通过循环访问它,如下所示: DB处理程序具有: public ArrayList<Details> getDetails(int value) { SQLiteDatabase db = this.getWritableDatabase(); String selectQuery = "SELECT * FROM " + TABLE__DETAILS_LOCAL +

我正在尝试从DB中检索值并在listView中显示它们。我创建了一个模型,通过循环访问它,如下所示:

DB处理程序具有:

public ArrayList<Details> getDetails(int value) 
    {
        SQLiteDatabase db = this.getWritableDatabase();

        String selectQuery = "SELECT * FROM " + TABLE__DETAILS_LOCAL + " ORDER BY " + "STRFTIME(" + KEY_FULL_DATE_LOCAL + ")" + " desc LIMIT " + value + ", 8";

        Cursor cursor = db.rawQuery(selectQuery, null);

        ArrayList<Details> datalist = new ArrayList<Details>();
        if (cursor.moveToFirst()) 
        {
              Details  valueID = null;
            do 
            {
                valueID = new Details(cursor.getString(0), cursor.getString(1), cursor.getString(2), cursor.getString(3),  cursor.getString(5), cursor.getString(6), cursor.getString(7), cursor.getString(8), 
                        cursor.getString(9), cursor.getString(10), cursor.getString(11), cursor.getString(12), cursor.getString(13), cursor.getString(14));

                datalist.add(valueID);
            } 

            while (cursor.moveToNext());
            cursor.close();
            db.close();
        }
        return datalist;
    }
public ArrayList getDetails(int值)
{
SQLiteDatabase db=this.getWritableDatabase();
String selectQuery=“按“+”STRFTIME(“+KEY\u FULL\u DATE\u LOCAL+”)“+”desc LIMIT“+value+”,8”从“+表格详细信息\u LOCAL+”中选择*”;
Cursor Cursor=db.rawQuery(selectQuery,null);
ArrayList datalist=新的ArrayList();
if(cursor.moveToFirst())
{
详细信息valueID=null;
做
{
valueID=新的详细信息(cursor.getString(0)、cursor.getString(1)、cursor.getString(2)、cursor.getString(3)、cursor.getString(5)、cursor.getString(6)、cursor.getString(7)、cursor.getString(8),
cursor.getString(9)、cursor.getString(10)、cursor.getString(11)、cursor.getString(12)、cursor.getString(13)、cursor.getString(14));
datalist.add(valueID);
} 
while(cursor.moveToNext());
cursor.close();
db.close();
}
返回数据列表;
}
要访问java文件中的it文件,请执行以下操作:

            for (int i = 0; i < value; i++)
            {
                String Id = db.getDetails(count).get(i).getID();
                String Type = db.getDetails(count).get(i).getType();
                String TypeImage = db.getDetails(count).get(i).getTypeImage();
            }
for(int i=0;i
我在数据库里有大约350条记录。当我执行上述代码时,它会检索记录和每一列,并显示在日志中,但问题是速度太慢

有没有更好更快的方法来检索数据

还是以上是最好的方法


让我知道

最好的方法是使用and

这里有一个教程可以帮助你,

下面是另外两个很好的教程


将数据加载到中时,可以使用选择参数指定标记、日期、月份等。

它是。。。极坏的您正在访问每一行和每一列的数据库!!您应该在一个查询中获得包含完整列的所有行。根据您的项目,使用库来帮助您可能会更好。一个关于速度的建议可能是领域。在这个网站上找到更多信息:@DerGolem-如何在单个查询中实现所有行和完整列?如何检索它们?查找一些教程,如给出的答案所示below@DerGolem:明白了。采取了不同的方法。现在一切都加载得非常快。感谢您的快速回复,但是如果我想获取特定月份和年份的数据呢?该表没有月份和年份格式?而是日期格式?是否可以为特定日期和时间编写参数?-需要以同样的方式提取特定标签、日期、月份的数据吗?