SQLite i blokowanie pliku bazy

0

Witam, problem jest tego typu:

Coś dzisiaj popieprzyłem w programie (i właśnie cholera nie wiem co), że po wywołaniu metody, która zapisuje do bazy (albo robi operacje inne niż odczyt ) nie rozłącza połączenia i wywołanie po niej jakiejkolwiek innej metody, która operuje na db powoduje jej zablokowanie.

Wiem, że SQLite dopuszcza maksymalnie jedno połączenie zapisujące, ale jeszcze do wczoraj nic się nie zawieszało, nie blokowało, a nie dodawałem żadnej metody, która operuje na bd.

Kod klasy DBHelper.java

public class DBHelper {

    Connection connection = null;
    
    public Connection connectToDatabase() throws ClassNotFoundException {
        
        try {
            
            Class.forName("org.sqlite.JDBC");
                        
            connection = DriverManager.getConnection("jdbc:sqlite:D:\\Testdb1.sqlite");            
            return connection;
        }
        catch(SQLException e){
            
            System.err.println("Problem with connection: " + e);
            return null;
        }
    }
}

Kod przykładowej metody zapisującej do db

    public void addNewCategory(Category category) throws ClassNotFoundException {
        
        try {
            
            Connection connection = dbh.connectToDatabase();
            Statement statement = connection.createStatement();
            statement.executeQuery("INSERT INTO category(name) VALUES('" + category.getName() + "');");  
                     
        }catch(SQLException e) {
            
            System.err.print("Problem with adding a new category" + e);
        }
    }

Kod przykładowej metody czytającej z db

 public ObservableList<Category> getCategoryList() throws ClassNotFoundException, SQLException {
        
        ResultSet rs = null;
        
        try {
            
            Connection connection = dbh.connectToDatabase();
            Statement statement = connection.createStatement();
            rs = statement.executeQuery("SELECT * FROM category;");  
                     
        }catch(SQLException e) {
            
            System.err.print("Problem with getting list of a category" + e);
        }
        
        ObservableList<Category> list = FXCollections.observableArrayList();
        
        while(rs.next()) {
            
            Category c = new Category();
            c.setName(rs.getString("name"));
            c.setId(rs.getInt("id"));
            
            list.add(c);
        }
        
        return list;
    }

Ma ktoś jakiś pomysł odnośnie przyczyny?
Pozdrawiam

0

Najprawdopodobniej chodzi o zamknięcie połączenia metodą close() bądź użycie połączenia w wyrażeniu try - with -resources.

0

Niestety oba nie działają...

1 użytkowników online, w tym zalogowanych: 0, gości: 1