如何以desc顺序从sqlite中检索数据并在文本视图中显示

时间:2017-01-12 18:49:23

标签: android sqlite android-sqlite

任何人都可以帮我尝试以desc顺序检索数据并按逆序显示在textview中,因为最新的条目会先显示出来吗?

此查询在mysql中是正确的

客户是第一个表,历史表有客户历史数据

应用程序工作正常,但当我尝试以desc顺序获取数据时,很遗憾它已关闭。

甚至我只尝试了一次"成本"列仍然是应用程序不幸关闭。

public StringBuilder getData(String custname)
{
    String query="select h.lsd , h.work,h.cost from  "+c_tablename+" c, "+h_tablename+" h where name='"+custname+"' and c.bike_number=h.bike_number ORDER BY lsd DESC";
    SQLiteDatabase sqLiteDatabase=this.getReadableDatabase();
    Cursor cursor=sqLiteDatabase.rawQuery(query,null,lsd+"DESC");
    StringBuilder stringBuilder =new StringBuilder();
    cursor.moveToFirst();

    if ( cursor !=null )// cursor!=null  error --  android.database.CursorIndexOutOfBoundsException: Index 0 requested,
    {

        do {
            //cursor.moveToFirst();

            String lsd=cursor.getString(cursor.getColumnIndex("lsd"));
            stringBuilder.append("Date:"+lsd+"\n");

            String lwd=cursor.getString(cursor.getColumnIndex("work"));
            stringBuilder.append("Work:"+lwd+"\n");

            String cost=cursor.getString(cursor.getColumnIndex("cost"));
            stringBuilder.append("Cost:"+cost");

        }while (cursor.moveToNext());
        cursor.close();


    }

    return stringBuilder;
}  

在上面的代码中,查询执行正确,直到

字符串查询="从" + c_tablename +"中选择h.lsd,h.work,h.cost; c," + h_tablename +" h其中name ='" + custname +"'和c.bike_number = h.bike_number&#34 ;;

并将数据显示为第1个条目第1个和最后一个条目

但是当我通过lsd desc按顺序排序时,应用程序很快就会关闭。

String query="select h.lsd , h.work,h.cost from  "+c_tablename+" c, "+h_tablename+" h where name='"+custname+"' and c.bike_number=h.bike_number ORDER BY lsd DESC";

01-12 23:57:16.599 4046-4059 /? W / SQLiteConnectionPool:数据库' +数据+用户+ 0 + com_google_android_gms +数据库+ metrics_db'的SQLiteConnection对象。被泄露了!请修复您的应用程序以正确结束正在进行的事务,并在不再需要时关闭数据库。

1 个答案:

答案 0 :(得分:1)

您遇到此错误,因为您的表格中可能没有数据,因此您必须检查是否有任何数据?

试试吧。

if ( cursor !=null && cursor.getCount()>0){
    //do your stuff
}

您必须指定特定列,因为两个表中可能都有lsd列,因此在编写查询时具体如此

试试这个

String query="select h.lsd , h.work,h.cost from "+c_tablename+" c, "+h_tablename+" h where name='"+custname+"' and c.bike_number=h.bike_number ORDER BY h.lsd DESC";
相关问题