首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLITE_BUSY数据库文件被锁定

SQLITE_BUSY数据库文件被锁定
EN

Stack Overflow用户
提问于 2022-05-14 00:04:42
回答 1查看 168关注 0票数 0

即使我关闭了连接和语句,我还是会得到错误的[SQLITE_BUSY] The database file is locked (database is locked)。不知道还能尝试什么。

代码语言:javascript
复制
 public void getTeams() throws SQLException {
    Connection c = DriverManager.getConnection("jdbc:sqlite:leagueDatabase.db");
    Statement teamStmt = c.createStatement();
    ResultSet teamData = teamStmt.executeQuery("SELECT * FROM TEAMS");

    while (teamData.next()) {
        teams.add(new Team(teamData.getString("city"), teamData.getString("name")));
    }
    teamData.close();
    teamStmt.close();
    c.close();

    Connection c2 = DriverManager.getConnection("jdbc:sqlite:leagueDatabase.db");
    Statement teamStatsStmt = c2.createStatement();
    ResultSet teamStatsData = teamStatsStmt.executeQuery("SELECT * FROM TEAM_STATS");

    for (int i = 0; i < teams.size(); i++) {
        for (int j = 0; j < players.size(); j++) {
            if (players.get(j).getTeam().equalsIgnoreCase(teams.get(i).getName()))
                teams.get(i).addPlayer(players.get(j));
        }
        teams.get(i).setStats(new TeamStats(teamStatsData.getInt("wins"), teamStatsData.getInt("losses"), (int) Math.round(teams.get(i).calcTeamRating()), SEASON, teams.get(i).getName()));
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-14 00:36:22

您正在关闭第一个连接(c),但不关闭第二个连接(c2)。

你为什么要建立两种联系?为什么不简单地在第一个连接上创建两个语句,然后在第二个语句之后关闭第一个连接(c)?然后您可以完全避免第二个连接(并且您没有关闭它的事实很可能是您的错误的原因)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72236401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档