Я пытаюсь реализовать систему управления версиями базы данных, чтобы в будущем можно было добавлять / удалять объекты в различных схемах таблиц.Тем не менее, я могу прочитать прагму базы данных 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, конечно, возвращает действительную базу данных.