【发布时间】:2017-01-17 03:55:43
【问题描述】:
谁能帮我尝试按 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;
}
在上面的代码中,查询执行正确,直到
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";
并将数据显示为第一个条目第一个和最后一个条目
但是当我通过 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:数据库 '+data+user+0+com_google_android_gms+databases+metrics_db' 的 SQLiteConnection 对象被泄露!请修复您的应用程序以正确结束正在进行的事务并在不再需要时关闭数据库。
【问题讨论】:
-
'应用程序不幸关闭'是崩溃,请提供来自 logcat 的堆栈跟踪
标签: android sqlite android-sqlite