JavaFX程序初次运行创建数据库并执行建表SQL详解

网友投稿 442 2022-12-31


JavaFX程序初次运行创建数据库并执行建表SQL详解

在我的第一个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; GYbOPsHwE

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);

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:数据采集系统接口设计任务(数据采集与传输系统的设计)
下一篇:开源 api 网关(开源API网关abtest网关)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~