Как изменить массив списков идентификаторов на список значений других столбцов SQLite? - PullRequest
1 голос
/ 16 февраля 2020

У меня есть Arraylist of идентификаторы студентов, отфильтрованные по backend, которые я отображаю в виде списка. Вместо идентификаторов я хочу написать имена, которые хранятся в другой таблице. Прямо сейчас я фильтрую идентификаторы следующим образом:

public Cursor getAllSlots(String TimeId) {
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor res = db.rawQuery("select * from " + TABLE_SLOTS + " WHERE timeid = '" + TimeId +"'", null);
    return res;
}

Затем я использую это для отображения идентификаторов учеников, которые я получил из своей базы данных, примерно так:

Cursor cursormo = myDb.getAllSlots(TimeId);  
while(cursormo.moveToNext()){
                    HashMap<String, String> resultMap = new HashMap<>();
                    resultMap.put("Name", cursormo.getString(1));
                    listItems.add(resultMap);
                    arrayListStudentsTime.add(cursormo.getString(1));
                }

И теперь мне нужно получить имена студенческих номеров из другой таблицы . Поэтому я попытался перенести Arraylist "arrayListStudentsTime" в свою базу данных и попробовать это:

public Cursor getNamesbyIDs(ArrayList StudentIds) {
    Log.d("CREATION", "getNamebyID() called");
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor res = db.rawQuery("select * from " + TABLE_NAME + " WHERE id = '" + StudentIds +"'", null);
    return res;
}

Но это не работает ... У кого-нибудь есть идея? Заранее спасибо !!

1 Ответ

0 голосов
/ 16 февраля 2020

изменить это:

Cursor res = db.rawQuery("select * from " + TABLE_NAME + " WHERE id = '" + StudentIds +"'", null);

на:

String commaSeperatedIds= String.join(",", StudentIds);

Cursor res = db.rawQuery("select * from " + TABLE_NAME + " WHERE id in (" + commaSeperatedIds+")", null);
...