java - 使用 SQLiteOpenHelper 时进行 JOIN 查询的最佳方法是什么

标签 java android sqlite

我目前正在这样做。

有更好的方法吗?

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;
}

最佳答案

rawQuery() 的替代方案是 query(),但它不是为连接而设计的。

如果您认为您的加入足够重要,您可以 create a view出来,然后在表中使用它进行 query()

<小时/>

注意:建议将 teamId 之类的值作为参数传递,而不是将它们格式化为查询字符串:

rawQuery(..._TEAM_ID + " = ?", new String[] { Integer.toString(teamId) });

关于java - 使用 SQLiteOpenHelper 时进行 JOIN 查询的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12914088/

相关文章:

java - 所有线程都被锁定在 wait() 状态

java - Android 找不到字体资源

java - 如何在某个月做某事?

java - 如何将单个SQLite数据显示到textview中?

java - 如何将 int 值添加到 Set<Integer> (HashSet<Integer>)?

java - REST API 的目的地天气 API 未在 postman 中返回 JSON 数据

java - 动态填充字符串数组

android - 在 Android Activity 上调用 finish() 并没有真正完成

python - 如何为作为架构附加的 SQLite 数据库设置 Alembic?

sqlite - 主数据库中的外键引用附加数据库