前言
公司项目需要打包成exe可执行文件进行客户环境部署,其中mysql数据库也是一键安装的,其中涉及到数据库的创建和初始化问题,下面就是解决方案:
一、自动创建数据库
Connection.createStatement() 方法用于创建一个 Statement 对象,封装 SQL 语句发送给数据库,通常用来执行不带参数的 SQL 语句。
Connection connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306?serverTimezone=UTC", username, password);
Statement statement = connection.createStatement();
statement.executeUpdate("create database if not exists `mysql_database` default character set utf8mb4 COLLATE utf8mb4_general_ci");
statement.close();
connection.close();
二、执行SQL文件
java通过ScriptRunner执行存储过程sql脚本,ScriptRunner类属于org.apache.ibatis.jdbc包。
Connection connectionSql = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mysql_database?serverTimezone=UTC", username, password);
ScriptRunner runner = new ScriptRunner(connectionSql);
Resources.setCharset(StandardCharsets.UTF_8);
runner.setLogWriter(null);
String sqlUrl = projectUrl.replace("/","\\\\")+"mysqldata\\mysql_init.sql";
runner.runScript(new InputStreamReader(new FileInputStream(sqlUrl), StandardCharsets.UTF_8));
connectionSql.close();