无法解决SQLiteException:near" SELECT&#34 ;:语法错误(代码1)

时间:2016-03-14 10:33:14

标签: android sqlite

我试图从数据库中获取数据。当我点击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;
    }

问题:我该如何解决此错误?

2 个答案:

答案 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 + " =?)";