У меня было приложение java с подключением mysql, но мне пришлось перенести мою базу данных в sqlite из mysql, потому что mysql не может быть встроено, у меня есть подключение, но я получаю это исключение, когда я с помощью приложения.
org.sqlite.SQLiteException: [SQLITE_BUSY] The database file is locked (database is locked)
Я узнал, что это частая ошибка, но попробовал большинство ответов, но не смог решить. Проблема в том, что у меня есть около 30 различных методов с типом void или возвращаемыми типами, такими как эти 2, например, ниже; (Я вызываю эти методы в моем приложении Swing позже)
У меня они есть в начале моего класса;
private Connection con = null;
private Statement statement = null;
private PreparedStatement preparedstatement = null;
Например, методы;
public int lastPlaceProgram(){
String query= "Select * from userprogram where laststayed = 1";
try {
statement = con.createStatement();
ResultSet rs = statement.executeQuery(query);
int programid = 0;
while(rs.next()){
programid = rs.getInt("programid");
}
return programid;
} catch (SQLException ex) {
Logger.getLogger(Operations.class.getName()).log(Level.SEVERE, null, ex);
return 0;
}
}
или
public String programType(int programid){
String query = "Select * from programs where id = ?";
try {
preparedStatement = con.prepareStatement(query);
preparedStatement.setInt(1, programid);
ResultSet rs = preparedStatement.executeQuery();
String type = "";
while(rs.next()){
type = rs.getString("type");
}
return type;
} catch (SQLException ex) {
Logger.getLogger(Operations.class.getName()).log(Level.SEVERE, null, ex);
return null;
}
}
Конструктор;
public Operations() {
String url = "jdbc:sqlite:C://Users//Me//Desktop//sqlited/trying.db";
try {
con = DriverManager.getConnection(url);
} catch (SQLException ex) {
Logger.getLogger(Operations.class.getName()).log(Level.SEVERE, null, ex);
}
}
Я попытался добавить этот блок finally в блоки after catch всех моих 30 методов;
finally{
try{
con.close();
} catch(Exception e){
}
}
Но это не помогло ' t работает, на этот раз он выдал ошибку «Соединение закрыто». Я также пробовал добавить preparestatement.close (); в этот блок finally, но все еще не работал.