2017-01-12 9 views
1

データを降順で取得し、逆順でテキストビューに表示すると、最新のエントリが最初に表示されます。降順でsqliteからデータを取得してテキスト表示で表示する方法

このクエリは

顧客が第一テーブルと歴史の表であるMySQLで正しいですが、顧客を持っている過去のデータ

アプリが正常に動作しているが、私はDESCの順序でデータを取得しようとしたときには、残念ながら閉鎖されます。

でも、残念ながら私はただ1つの "コスト"の列にしようとしています。上記のコードで

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 + "C "+ h_tablename +" H」からh.lsd、h.work、h.cost選択" まで= '"+ custname +"'とc.bike_number = h.bike_number ";

第一エントリの第一及び

最後の最後のエントリなどのデータを表示するが、私はアプリDESC 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 lsd DESC"; 

01-12 23:57:16.5994046-4059 /? W/SQLiteConnectionPool:データベース '+ data + user + 0 + com_google_android_gms + databases + metrics_db'のSQLiteConnectionオブジェクトがリークしました!進行中のトランザクションを正常に終了するようにアプリケーションを修正し、不要になった時点でデータベースを閉じるようにしてください。

+0

を試してみてください

のような書き込みクエリに特異的であることの両方のテーブルにlsd列があるかもしれないので、「アプリが、残念ながら閉じています」クラッシュです、logcatからstacktraceを提供してください –

答えて

1

テーブルにデータがない可能性があり、データがあるかどうかを確認する必要があるため、このエラーが発生しましたか?

これを試してみてください。あなたが特定の列を指定する必要が

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

ので、ちょうどこの

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"; 
+0

代わりに 'while(cursor.moveToNext()){..yourstuff ..}'を使用することもできます。行がない場合、ループは決して入力されません。 – MikeT

+0

@Jaymin Panchal感謝しました::) –

+0

@Jaymin Panchal ... done –

関連する問題