Попытка обновить 'PRAGMA user_version;'но не обновляет - PullRequest
0 голосов
/ 04 марта 2019

Я пытаюсь реализовать систему управления версиями базы данных, чтобы в будущем можно было добавлять / удалять объекты в различных схемах таблиц.Тем не менее, я могу прочитать прагму базы данных user_version, но все, что я пытался записать в нее, не удалось ... Я занимался этим около 2 часов, но безуспешно.Вот где я сейчас нахожусь: 'package statusboard.databaseHelpers;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import statusboard.Constants;

public class DataBaseHelper {

    Connection c = null;
    static Constants con = new Constants();
    static int version = -1;

    public DataBaseHelper() {
        openDatabase();
    }

    public DataBaseHelper(Connection con) {
        c = con;
    }

    public void openDatabase() {
        try {
            Class.forName("org.sqlite.JDBC");
            c = DriverManager.getConnection(con.getDatabaseName());
        } catch (ClassNotFoundException | SQLException e) {
            System.err.println(e.getClass().getName() + ": " + e.getMessage());
            System.exit(0);
        }
    }

    public int getDatabaseVersion() {
        // only call the SQL query if we have not already populated the version.
        if (version == -1) {
            if (c == null) {
                openDatabase();
            }
            try {
                Statement stmt = c.createStatement();
                ResultSet result;
                String sql = "PRAGMA user_version;";
                result = stmt.executeQuery(sql);
                while (result.next()) {
                    version = result.getInt(1);
                }
                stmt.close();
            } catch (SQLException e) {
                System.err.println(e.getClass().getName() + ": " + e.getMessage());
            }
        }
        System.out.println("Returning version: " + version);
        return version;
    }

    public int incrementDatabaseVersion() {
        if (c == null) {
            openDatabase();
        }
        // ensure version has been populated
        if (version == 0) {
            getDatabaseVersion();
        }
        version++;
        System.out.println("new version: " + version);
        try {
            c.createStatement().execute("PRAGMA user_version =  21;");
            //stmt.execute("PRAGMA user_version = " + version);
            System.out.println("After execute");

        } catch (SQLException e) {
            System.err.println(e.getClass().getName() + ": " + e.getMessage());
        }
        return version;
    }

}

'

Constants.java, конечно, возвращает действительную базу данных.

1 Ответ

0 голосов
/ 04 марта 2019

Возможно, вам понадобится очистить файл базы данных SQLite.Посмотрите, что делает вакуум здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...