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);
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。