Получение записей на основе двух разных идентификаторов - PullRequest
0 голосов
/ 01 июня 2018

Мне удалось получить записи из базы данных SQLite, когда у меня есть только один идентификатор для поиска.Например, я передал свой идентификатор лиги в таблицу боулеров и перечислил все боулеры, связанные с этим идентификатором.Теперь, когда я создаю Серию для этого боулера, я передаю Идентификатор Лиги и Идентификатор Боулера в таблицу Серий, чтобы убедиться, что я получаю только серии, принадлежащие этому боулеру в определенной Лиге.

К спискуБоулеры Я использовал следующий код:

public Bowler getBowler(String leagueId) {
        //Get Readable Database If We Are Not Inserting Anything
        SQLiteDatabase db = this.getReadableDatabase();

        Cursor cursor = db.query(Bowler.TABLE_NAME,
                new String[]{Bowler.COLUMN_ID, Bowler.COLUMN_LEAGUE_ID, Bowler.COLUMN_NAME, Bowler.COLUMN_TIMESTAMP},
                Bowler.COLUMN_LEAGUE_ID + "=?",
                new String[]{String.valueOf(leagueId)}, null, null, null, null);

        if (cursor != null)
            cursor.moveToFirst();

        //Prepare Bowler Object
        Bowler bowler = new Bowler(
                cursor.getInt(cursor.getColumnIndex(Bowler.COLUMN_ID)),
                cursor.getString(cursor.getColumnIndex(Bowler.COLUMN_LEAGUE_ID)),
                cursor.getString(cursor.getColumnIndex(Bowler.COLUMN_NAME)),
                cursor.getString(cursor.getColumnIndex(Bowler.COLUMN_TIMESTAMP)));

        //Close Database Connection
        cursor.close();

        return bowler;
    }

Чтобы перечислить серию боулеров, я попробовал следующее:

public Series getSeries(String leagueId, String bowlerId) {
        //Get Readable Database If We Are Not Inserting Anything
        SQLiteDatabase db = this.getReadableDatabase();

        Cursor cursor = db.query( Series.TABLE_NAME,
                new String[]{Series.COLUMN_ID, Series.COLUMN_LEAGUE_ID, Series.COLUMN_BOWLER_ID, Series.COLUMN_NAME, Series.COLUMN_SERIES_AVERAGE, Series.COLUMN_TIMESTAMP},
                Series.COLUMN_LEAGUE_ID + Series.COLUMN_BOWLER_ID + "=?",
                new String[]{String.valueOf(leagueId)}, null, null, null, null)
                new String[]{String.valueOf(bowlerId)}, null, null, null, null);

        if (cursor != null)
            cursor.moveToFirst();

        //Prepare Bowler Object
        Series series = new Series(
                cursor.getInt(cursor.getColumnIndex(Series.COLUMN_ID)),
                cursor.getString(cursor.getColumnIndex(Series.COLUMN_LEAGUE_ID)),
                cursor.getString(cursor.getColumnIndex(Series.COLUMN_BOWLER_ID)),
                cursor.getString(cursor.getColumnIndex(Series.COLUMN_NAME)),
                cursor.getString(cursor.getColumnIndex(Series.COLUMN_SERIES_AVERAGE)),
                cursor.getString(cursor.getColumnIndex(Series.COLUMN_TIMESTAMP)));

        //Close Database Connection
        cursor.close();

        return series;
    }

Я знаю, что это неверно, и я не знаю, как на самом делеполучите это отформатированный правильно.

Я не уверен, является ли это даже правильным подходом или есть другой способ сделать то же самое, что может быть проще.

1 Ответ

0 голосов
/ 01 июня 2018

Похоже, ваш запрос на выбор неверен.Вы пытаетесь выбрать один из двух отдельных столбцов.

У вас есть: "WHERE series_idbowler_id =?"

как это выглядит, как вы хотите "" WHERE series_id =?AND bowler_id =? "

попробуйте отформатировать ваш запрос следующим образом:

db.query( Series.TABLE_NAME,
            new String[]{Series.COLUMN_ID, Series.COLUMN_LEAGUE_ID, Series.COLUMN_BOWLER_ID, Series.COLUMN_NAME, Series.COLUMN_SERIES_AVERAGE, Series.COLUMN_TIMESTAMP},
            Series.COLUMN_LEAGUE_ID + "=?" + " AND " +  Series.COLUMN_BOWLER_ID + "=?",
            new String[]{String.valueOf(leagueId), String.valueOf(bowlerId)}, null, null, null, null);
...