Ошибка базы данных SQLiteDatabase: рядом с «in1»: синтаксическая ошибка

#java #android #sqlite #android-sqlite

#java #Android #sqlite #android-sqlite

Вопрос:

Я нажал первую кнопку. На этот раз отображается ошибка in1

Я поместил = в запрос некоторую ошибку рядом с «=»: синтаксическая ошибка

Как ее решить?

В этом запросе я использую конструктор строк для объединения нескольких строк

  public List<People> getPeople(String category_id) {
    List<People> peoples = new ArrayList<>();
    try {
        SQLiteDatabase db = SQLiteDatabase.openDatabase(DB_PATH   DB_NAME, null, SQLiteDatabase.OPEN_READWRITE);
        StringBuilder sb = new StringBuilder();
        sb.append(",");
        Cursor cursor = db.rawQuery("select * from people where category_id in "  (category_id   sb   category_id) , null);

        while (cursor.moveToNext()) {
            String peopleName = cursor.getString(cursor.getColumnIndex(PEOPLE_NAME));
            String peopleImage = cursor.getString(cursor.getColumnIndex(PEOPLE_IMAGE));

            People people = new People();
            people.setPeopleName(peopleName);
            people.setPeopleImage(peopleImage);

            peoples.add(people);
        }

    } catch (Exception e) {
        Log.d("DB", e.getMessage());
    }
    return peoples;
}
  

Комментарии:

1. для начала вам понадобится пробел после in

2. оставьте пробел после in : in " (category_id

3. оставьте пробел после »

4. Я не вижу цели StringBuilder . Это просто запятая

Ответ №1:

Ваш синтаксис должен быть:

 "select * from people where category_id in ("   category_id   sb   category_id   ")"
  

Скобки являются частью предложения IN .

или просто:

 "select * from people where category_id in ("   category_id   ", "   category_id   ")"
  

Потому что stringbuilder не является необходимым.