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