java - SQLite - 数据库在 Java 中被锁定

标签 java sqlite database-locking

在第一种方法中,我创建数据库(如果不存在):

        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.`

我需要这方面的帮助。谢谢。 (我不使用提交,我尝试使用它并且也给了我错误)

最佳答案

SQLite 过去常常在使用 SQLite 浏览器等任何应用程序打开它时抛出此类错误,并且我们在代码中使用相同的文件。因此,在运行代码之前关闭数据库。

关于java - SQLite - 数据库在 Java 中被锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27212788/

相关文章:

java - 在 Eclipse 中将 Android 项目转换为 'regular' Java 项目?

java - android 如何在android的Asynctask中加载sqlite数据

ruby-on-rails - 如何确保模型始终使用事务和锁(在 Rails 中)?

sqlite - 帮助修复奇怪的 sqlite3 错误 - dyld : Library not loaded:/usr/lib/libsqlite3. 0.dylib

mysql - 由于选择查询而锁定表?

java - 无法加载驱动程序类 org.mariadb.jdbc.Driver

java - 在 Java 中同步访问只读映射的正确方法

java - java中有没有一种setjmp/longjmp?

java - 如何在Sqlite中创建数据库?