1

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

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

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

4

1 回答 1

0

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

于 2014-11-30T12:27:52.150 回答