您好,登錄后才能下訂單哦!
在我的第一個JavaFX程序完成安裝的時候才突然發現,不能要用這個軟件還要手動執行Sql來建表吧?
于是我的想法是在Main程序中執行時檢測數據庫連接狀況,如果沒有檢測到數據庫或者連接異常,那么出現錯誤提示,如果數據庫連接沒有問題那么自動創建數據庫并執行建表Sql進行初始化。
package oa.util; import java.io.IOException; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Properties; import org.apache.ibatis.jdbc.ScriptRunner; import com.ibatis.common.resources.Resources; import com.mysql.jdbc.Connection; import com.mysql.jdbc.Statement; public class CreateMySqlDatabase { public static void createDatabase() throws SQLException { Connection conn; conn = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/", "root", "1234"); Statement stmt = (Statement) conn.createStatement(); String sql = "CREATE DATABASE UTILITY"; stmt.executeUpdate(sql); } public static void executeSql() throws IOException, SQLException { Properties props = Resources.getResourceAsProperties("mysql.properties"); String url = props.getProperty("jdbc.url"); String username = props.getProperty("jdbc.username"); String password = props.getProperty("jdbc.password"); Connection conn = (Connection) DriverManager.getConnection(url, username, password); ScriptRunner runner = new ScriptRunner(conn); runner.setErrorLogWriter(null); runner.setLogWriter(null); runner.runScript(Resources.getResourceAsReader("sql/utility.sql")); conn.close(); System.out.println("==SUCCESS=="); } }
需要用到 ibatis-common-2.jar讀取mysql.properties文件中的JDBC信息。
MAIN做判斷:
try { DriverManager.getConnection("jdbc:mysql://localhost:3306/utility", "root", "1234"); isError = false; } catch (MySQLSyntaxErrorException e) { primaryStage.setTitle("正在創建Utility數據庫……"); Label error = new Label("正在創建Utility數據庫……"); error.setFont(new Font("Cambria", 100)); Pane pane = new Pane(); pane.getChildren().add(error); Scene scene = new Scene(pane); primaryStage.setScene(scene); primaryStage.show(); try { CreateMySqlDatabase.createDatabase(); CreateMySqlDatabase.executeSql(); isError = false; primaryStage.close(); } catch (SQLException | IOException e1) { primaryStage.close(); e1.printStackTrace(); } } catch (SQLException se) { Thread.sleep(3000); primaryStage.close(); se.printStackTrace(); } if (!isError) { run(); } } public static void main(String[] args) { launch(args); }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。