0

私は現在、このようにしています。

より良い方法はありますか?

public Cursor selectRostersForTeam(Activity activity, int teamId) {

    final String MY_QUERY = "SELECT r." + _ROSTER_ID + ", t." + _TEAM_ID + ", t." + TEAM_NAME + ", t." + TEAM_SEASON_WINS + ", t." + TEAM_SEASON_LOSSES + ", t." + TEAM_CHAMPIONSHIP_WINS + ", j." + _TEAMS_ROSTERS_ID + " FROM " + TABLE_TEAM + " AS p" + " JOIN " + TABLE_TEAMS_ROSTERS + " j ON (r." + _ROSTER_ID + " = j." + TEAMS_ROSTER_ROSTER_ID + ") " + " JOIN " + TABLE_TEAM + " ch ON (j." + TEAMS_ROSTER_TEAM_ID + " = t." + _TEAM_ID + ") WHERE j. " + TEAMS_ROSTER_TEAM_ID + " = " + teamId + ";";



    SQLiteDatabase db = getReadableDatabase();

    Cursor cursor = db.rawQuery(MY_QUERY, null);

    activity.startManagingCursor(cursor);

    return cursor;
}
4

1 に答える 1

1

の代替はですrawQuery()query()、それは結合用に設計されていません。

結合が十分に重要であると思われる場合は、結合からビューを作成して、のテーブルで使用できますquery()


注:値をteamIdクエリ文字列にフォーマットするのではなく、パラメータのように渡すことをお勧めします。

rawQuery(..._TEAM_ID + " = ?", new String[] { Integer.toString(teamId) });
于 2012-10-16T12:13:41.517 に答える