我试图从数据库中获取数据。当我点击listview中的项目时,它应该获取所有点击项目的数据。但我收到此错误并无法解决。
致命的例外:主要 java.lang.RuntimeException:无法启动活动 ComponentInfo {com.example.matija.ams / com.example.matija.ams.DisplayLogs}: android.database.sqlite.SQLiteException:near" SELECT":语法错误 (代码1):,编译时:SELECT * FROM Logs WHERE id IN SELECT id FROM logs_recepits WHERE id =?
引起:android.database.sqlite.SQLiteException:near" SELECT": 语法错误(代码1):,编译时:SELECT * FROM Logs WHERE id IN SELECT id FROM logs_recepits WHERE id =?
public ArrayList<Logs> getAllLogs(long id) {
ArrayList<Logs> logList = new ArrayList<Logs>();
String selectQuery = "SELECT * FROM " + TABLE_LOGS + " WHERE " + KEY_ID + " IN " + ( "SELECT " + KEY_ID + " FROM " + TABLE_LOGS_BELONGS_TO_RECEPIT + " WHERE " + RECEPIT_ID + " =?");
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, new String[]{String.valueOf(id)});
//going throug all rows and adding it to list
if (cursor.moveToFirst()) {
do {
Logs log = new Logs();
log.setId(cursor.getLong(0));
log.setCreatedAt(cursor.getString(1));
log.setPlate_number(cursor.getString(2));
log.setSort_id(cursor.getString(3));
log.setGrade(cursor.getString(4));
log.setDiameter(cursor.getString(5));
log.setLength(cursor.getString(6));
logList.add(log);
}while (cursor.moveToNext());
}
return logList;
}
问题:我该如何解决此错误?
答案 0 :(得分:1)
看起来错位的括号
试试这个
String selectQuery = "SELECT * FROM " + TABLE_LOGS + " WHERE " + KEY_ID + " IN " + "(SELECT " + KEY_ID + " FROM " + TABLE_LOGS_BELONGS_TO_RECEPIT + " WHERE " + RECEPIT_ID + " =?)";
答案 1 :(得分:1)
试试这个:
括号应位于""
String selectQuery = "SELECT * FROM " + TABLE_LOGS + " WHERE " + KEY_ID + " IN " + "(SELECT " + KEY_ID + " FROM " + TABLE_LOGS_BELONGS_TO_RECEPIT + " WHERE " + RECEPIT_ID + " =?)";