SQLite - База данных заблокирована в Java

В первом методе я создаю базу данных, если она не существует:

        Class.forName("org.sqlite.JDBC");

    Connection connection = null;
    connection = DriverManager.getConnection("jdbc:sqlite:" + Gdx.files.internal("mjvsworld.db"));

    Statement statement = connection.createStatement();
    statement.executeUpdate("CREATE TABLE IF NOT EXISTS GLOBAL(ID INTEGER PRIMARY KEY" +
            " AUTOINCREMENT, NAME TEXT, MAXPUNTUATION INTEGER)");

    if (statement != null) statement.close();
    if (connection != null) connection.close();

Во втором методе, другим способом (я делаю то же самое, изменяя запрос на обновление), я пытаюсь прочитать, была ли вставлена ​​какая-то строка в таблицу, или, если таблица была создана сейчас, вставьте ее:

statement.executeUpdate("INSERT OR REPLACE INTO GLOBAL (ID, NAME, MAXPUNTUATION) VALUES "
                +"(1, 'Elvis', "+maxpoints+")");

В другом вызове, после того, как в проекте, я пытаюсь обновить только одну строку (ID=1), и ** в этом, дает мне ошибку **:

statement.executeUpdate("UPDATE GLOBAL set MAXPUNTUATION = "+puntos+" AND NAME = '"+name+"' where ID=1;");

'

**КОД ОШИБКИ: **

java.sql.SQLException: database is locked
at org.sqlite.NativeDB.throwex(NativeDB.java:210)
at org.sqlite.NativeDB._exec(Native Method)
at org.sqlite.Stmt.executeUpdate(Stmt.java:152)
at pack.util.DbConnection.actualizarMaxPuntuacion(DbConnection.java:94)
at pack.maingame.Platform.finalizarJuego(Platform.java:1060)
at pack.maingame.Platform.configurarDeteccionesJugador1(Platform.java:686)
at pack.maingame.Platform.render(Platform.java:443)
at pack.visual.GameScreen.render(GameScreen.java:51)
at com.badlogic.gdx.Game.render(Game.java:46)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:208)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:115)


DbConnection.java:94 `equals to last executeUpdate I post.`

Мне нужна помощь с этим. Благодарю. (Я не использую коммит, я пытался его использовать и выдает ошибку)

1 ответ

SQLite выдает такую ​​ошибку, когда она уже открыта с помощью любого приложения, такого как браузер SQLite, и мы используем тот же файл в коде. Итак, закройте базу данных перед запуском вашего кода.

Другие вопросы по тегам