@AwvuweWd

Как проверить блокировку DB?

Нужно проверить блокировку базы данных.
(Хочу сделать проверку на запущенную копию,взял направление на проверке бд)
Запускаю 1 копию,база блокируется,допустим запускаю 2 копию,она подключается к sqlite бд(которая занята)(тут нужно проверить)

вот подключение
Class.forName("org.sqlite.JDBC");
conn = DriverManager.getConnection("jdbc:sqlite:db.s3db");

вот исключение, которое нужно проверить:
org.sqlite.SQLiteException: [SQLITE_BUSY] The database file is locked (database is locked)
at org.sqlite.core.DB.newSQLException(DB.java:941)
at org.sqlite.core.DB.newSQLException(DB.java:953)
at org.sqlite.core.DB.throwex(DB.java:918)
at org.sqlite.core.NativeDB._exec_utf8(Native Method)
at org.sqlite.core.NativeDB._exec(NativeDB.java:94)
at org.sqlite.jdbc3.JDBC3Statement.executeUpdate(JDBC3Statement.java:109)
...
at java.base/java.lang.Thread.run(Thread.java:834)
  • Вопрос задан
  • 423 просмотра
Решения вопроса 1
@AwvuweWd Автор вопроса
Сделал отлов исключения
org.sqlite.SQLiteException: [SQLITE_BUSY] The database file is locked (database is locked)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
EreminD
@EreminD
Кое-что умею
это unit-тест?
@Test
    public void dbLockTest() {
        try {
            //тут ваш код котрый должен выбросить исклчение
            connectToDb();

             //если ваш код не выбросит исключения, то помечаем тест как failed()
            fail("Didn't throw any exception");
        } catch (Exception ex) {
            assertThat(ex, instanceOf(SQLiteException.class));
            assertThat(ex.getMessage(), equalTo("[SQLITE_BUSY] The database file is locked (database is locked)"));
          }
    }
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы