JavaFX程序初次运行创建数据库并执行建表SQL详解
在我的第一个JavaFX程序完成安装的时候才突然发现,不能要用这个软件还要手动执行Sql来建表吧?
于是我的想法是在Main程序中执行时检测数据库连接状况,如果没有检测到数据库或者连接异常,那么出现错误提示,如果数据库连接没有问题那么自动创建数据库并执行建表Sql进行初始化。
packageoa.util; importjava.io.IOException; importjava.sql.DriverManager; importjava.sql.SQLException; importjava.util.Properties; importorg.apache.ibatis.jdbc.ScriptRunner; importcom.ibatis.common.resources.Resources; importcom.mysql.jdbc.Connection; importcom.mysql.jdbc.Statement; publicclassCreateMySqlDatabase{ publicstaticvoidcreateDatabase()throwsSQLException{ Connectionconn; conn=(Connection)DriverManager.getConnection("jdbc:mysql://localhost:3306/","root","1234"); Statementstmt=(Statement)conn.createStatement(); Stringsql="CREATEDATABASEUTILITY"; stmt.executeUpdate(sql); } publicstaticvoidexecuteSql()throwsIOException,SQLException{ Propertiesprops=Resources.getResourceAsProperties("mysql.properties"); Stringurl=props.getProperty("jdbc.url"); Stringusername=props.getProperty("jdbc.username"); Stringpassword=props.getProperty("jdbc.password"); Connectionconn=(Connection)DriverManager.getConnection(url,username,password); ScriptRunnerrunner=newScriptRunner(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(MySQLSyntaxErrorExceptione){ primaryStage.setTitle("正在创建Utility数据库……"); Labelerror=newLabel("正在创建Utility数据库……"); error.setFont(newFont("Cambria",100)); Panepane=newPane(); pane.getChildren().add(error); Scenescene=newScene(pane); primaryStage.setScene(scene); primaryStage.show(); try{ CreateMySqlDatabase.createDatabase(); CreateMySqlDatabase.executeSql(); isError=false; primaryStage.close(); }catch(SQLException|IOExceptione1){ primaryStage.close(); e1.printStackTrace(); } }catch(SQLExceptionse){ Thread.sleep(3000); primaryStage.close(); se.printStackTrace(); } if(!isError){ run(); } } publicstaticvoidmain(String[]args){ launch(args); }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。