在開發(fā)過程中我們有時候會碰到這樣的場景,需要代碼動態(tài)創(chuàng)建數(shù)據(jù)庫并且執(zhí)行sql初始化腳本,下面給出一個簡單的實現(xiàn)類。
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.jdbc.ScriptRunner;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class sqlUtil {
? ? public static void main(String[] args){
? ? ? ? String database = "testdb";
? ? ? ? new sqlUtil ().getConn(database);
? ? }
? ? String mysqlDriver = "com.mysql.jdbc.Driver";
? ? String url = "jdbc:mysql://localhost:3306/mysql";
? ? String newUrl = "jdbc:mysql://localhost:3306/";
? ? String username = "root";
? ? String password = "root";
? ? Connection conn = null;
? ? Connection newConn = null;
? ? public void getConn(String database){
? ? ? ? try {
? ? ? ? ? ? Class.forName(mysqlDriver);
? ? ? ? }catch (ClassNotFoundException e){
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? ? ? try{
? ? ? ? ? ? String databaseSql = "create database " + database;
? ? ? ? ? ? conn = DriverManager.getConnection(url, username, password);
? ? ? ? ? ? Statement smt = conn.createStatement();
? ? ? ? ? ? if (conn != null) {
? ? ? ? ? ? ? ? smt.executeUpdate(databaseSql);
? ? ? ? ? ? ? ? newConn = DriverManager.getConnection(newUrl + database,
? ? ? ? ? ? ? ? ? ? username, password);
? ? ? ? ? ? ? ? ScriptRunner runner = new ScriptRunner(newConn);
? ? ? ? ? ? ? ? runner.setErrorLogWriter(null);
? ? ? ? ? ? ? ? runner.setLogWriter(null);
? ? ? ? ? ? ? ? runner.runScript( Resources.getResourceAsReader("dockerpaas.sql"));
? ? ? ? ? ? ? ? conn.close();
? ? ? ? ? ? ? ? newConn.close ();
? ? ? ? ? ? }
? ? ? ? }catch (SQLException e1){
? ? ? ? ? ? e1.printStackTrace();
? ? ? ? } catch (IOException e) {
? ? ? ? ? ? e.printStackTrace ( );
? ? ? ? }
? ? }
}