Java SQLITE\u数据库文件已锁定(数据库已锁定)

Java SQLITE\u数据库文件已锁定(数据库已锁定),java,sqlite,Java,Sqlite,我正在构建一个简单的javafx应用程序,在启动时它会运行一些代码来创建数据库、添加表和插入行(如果它们还不存在的话) 下面3个方法被依次调用,并且在AddAdminUser()方法中的executeUpdate(sql2)期间,SQLITE_BUSY将出现。我使用的是同一个数据库连接,它在任何时候都不会被关闭。我哪里做错了 public void CreateUsersTable(Connection conn) throws SQLException { System.out.pr

我正在构建一个简单的javafx应用程序,在启动时它会运行一些代码来创建数据库、添加表和插入行(如果它们还不存在的话)

下面3个方法被依次调用,并且在AddAdminUser()方法中的executeUpdate(sql2)期间,SQLITE_BUSY将出现。我使用的是同一个数据库连接,它在任何时候都不会被关闭。我哪里做错了

public void CreateUsersTable(Connection conn) throws SQLException {

    System.out.println("Creating Users table...");
    Statement stmt = conn.createStatement();
    String sql1 = "CREATE TABLE IF NOT EXISTS" +
            " Users" +
            " (UserID INTEGER not NULL UNIQUE," +
            "  FirstName VARCHAR(45) not NULL," +
            "  Surname VARCHAR(45) not NULL," +
            "  Username VARCHAR(45) not NULL UNIQUE," +
            "  Password VARCHAR(45) not NULL," +
            "  UserType VARCHAR(45) not NULL," +
            "  StudentID INTEGER UNIQUE," +
            "  DOB VARCHAR(45)," +
            "  ClassID INTEGER," +
            "  PRIMARY KEY (UserID AUTOINCREMENT));";
    stmt.executeUpdate(sql1);
}

public void CreateClassTable (Connection conn) throws SQLException {

    System.out.println("Creating Class table...");
    Statement stmt = conn.createStatement();
    String sql3 = "CREATE TABLE IF NOT EXISTS" +
            " Class" +
            " (ClassID INTEGER not NULL UNIQUE," +
            "  ClassName VARCHAR(45) not NULL," +
            "  PRIMARY KEY (ClassID AUTOINCREMENT));";
    stmt.executeUpdate(sql3);
}

public void AddAdminUser (Connection conn) throws SQLException {

    System.out.println("Adding Admin User...");
    Statement stmt = conn.createStatement();
    String sql2 = "INSERT OR REPLACE INTO" +
            " Users (FirstName, Surname, Username, Password, UserType)" +
            " VALUES ('Admin', 'User', 'admin', 'admin123', 'Administrator');";
    int inserted = stmt.executeUpdate(sql2);
    System.out.printf("Inserted %d rows\n", inserted);
}

某处。。。另一个与活动事务的连接仍保持打开状态。另外,自动提交是否设置为true?请使用java命名约定