【发布时间】:2020-10-07 18:09:09
【问题描述】:
我正在尝试将 sqlite 数据库与我的 javafx 应用程序一起使用,但是当我对它执行任何操作时,数据库上没有任何反应,并且我没有收到任何错误...
主要:
public void start(Stage primaryStage) throws IOException {
Main.primaryStage = primaryStage;
primaryStage.setTitle("Welcome to ServerDashboard");
primaryStage.setOnCloseRequest(event -> {
event.consume();
onClose();
});
MainConfig.load();
DatabaseController.createNewDatabase("data.db");
MainMenu.show(primaryStage);
}
数据库控制器:
public class DatabaseController {
public static void createNewDatabase(String fileName) {
String url = "jdbc:sqlite:" + fileName;
String sql = "CREATE TABLE IF NOT EXISTS warehouses (\n"
+ " id integer PRIMARY KEY,\n"
+ " name text NOT NULL,\n"
+ " capacity real\n"
+ ");";
try (Connection conn = DriverManager.getConnection(url)) {
if (conn != null) {
DatabaseMetaData meta = conn.getMetaData();
System.out.println("The driver name is " + meta.getDriverName());
System.out.println("The file was created in : " + new File("").getAbsolutePath() + "\\" + fileName);
System.out.println("A new database has been created.");
Statement stmt = conn.createStatement();
stmt.execute(sql);
System.out.println("A new table has been created");
}
} catch (SQLException e) {
System.out.println(e.getMessage());
}
}
} 输出:
The driver name is SQLite JDBC
The file was created in : N:\Code\Minecraft Java\ServerDashboard\data.db
A new database has been created.
A new table has been created
我尝试了所有能找到的教程,但似乎没有一个有用...
【问题讨论】:
-
我不认为你想要 sql 中的“\n”。 From the tutorial: String query = "select COF_NAME, SUP_ID, PRICE, SALES, TOTAL from COFFEES";
-
@mcalex 我试过也没有它也不起作用
-
也许尝试一个没有空格的目录(即不是“Minecraft Java”)。看起来你传递了一个相对的
fileName,尝试传递绝对引用。会发生什么? db文件是否被修改过?是否有现有的仓库表?尝试显示您发现了哪些诊断信息。