Java創建數據庫新建表及初始化表


方法一

package com.crt.openapi;

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
import java.sql.Connection;
import java.sql.Statement;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.jdbc.ScriptRunner;

public class CreateDB2 {

public static void main(String[] args) throws Exception
{
Class.forName("com.mysql.jdbc.Driver");

//一開始必須填一個已經存在的數據庫
String url = "jdbc:mysql://127.0.0.1:3306/ecsb_dev?characterEncoding=utf-8&autoReconnect=true";

//遇到一個亂碼的問題,是因為連接串中有這兩個參數allowMultiQueries=true&useUnicode=true&,耽擱了一天時間,最終找到是這個問題
// String url = "jdbc:mysql://127.0.0.1:3306/ecsb_dev?allowMultiQueries=true&useUnicode=true&characterEncoding=utf-8&autoReconnect=true";
Connection conn = DriverManager.getConnection(url, "root", "123456");
Statement stat = conn.createStatement();
String dataBaseName="ecsb_tenant9999";
//創建數據庫hello
stat.executeUpdate("CREATE DATABASE IF NOT EXISTS "+dataBaseName+" default charset utf8 COLLATE utf8_general_ci; ");

//打開創建的數據庫
stat.close();
conn.close();
url=url.replace("ecsb_dev", dataBaseName);
conn = DriverManager.getConnection(url, "root", "123456");
stat = conn.createStatement();

/* //創建表test
// stat.executeUpdate("create table test(id int, name varchar(80))");
//添加數據
stat.executeUpdate("insert into test values(1, '張三')");
stat.executeUpdate("insert into test values(2, '李四')");*/
ScriptRunner runner = new ScriptRunner(conn);
runner.setAutoCommit(false);
runner.setErrorLogWriter(null);
runner.setLogWriter(null);
// runner.runScript(new InputStreamReader(new FileInputStream("D:\\work_code\\version2\\ecsb-parent\\ecsb-springboot\\src\\main\\resources\\db.sql"),"gbk"));
Resources.setCharset(Charset.forName("UTF-8"));
/*InputStreamReader reader = new InputStreamReader(Resources.getResourceAsStream("db.sql"), "UTF-8");
runner.runScript(reader);*/
runner.runScript(Resources.getResourceAsReader("db.sql"));
//查詢數據
ResultSet result = stat.executeQuery("select * from api_token");
while (result.next())
{
System.out.println(result.getInt("id") + " " + result.getString("creater"));
}

//關閉數據庫
result.close();
stat.close();
conn.close();
}

}

方法二

導入ant包

<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant</artifactId>
<version>1.10.7</version>
</dependency>

 

package com.crt.openapi;

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.io.File;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
import java.sql.Connection;
import java.sql.Statement;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.jdbc.SQL;
import org.apache.ibatis.jdbc.ScriptRunner;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.SQLExec;

public class CreateDB {

public static void main(String[] args) throws Exception
{
Class.forName("com.mysql.jdbc.Driver");

//一開始必須填一個已經存在的數據庫
String url = "jdbc:mysql://127.0.0.1:3306/ecsb_dev?characterEncoding=utf-8&amp;autoReconnect=true";

//遇到一個亂碼的問題,是因為連接串中有這兩個參數allowMultiQueries=true&amp;useUnicode=true&amp;,耽擱了一天時間,最終找到是這個問題
// String url = "jdbc:mysql://127.0.0.1:3306/ecsb_dev?allowMultiQueries=true&amp;useUnicode=true&amp;characterEncoding=utf-8&amp;autoReconnect=true";
Connection conn = DriverManager.getConnection(url, "root", "123456");
Statement stat = conn.createStatement();
String dataBaseName="ecsb_tenant1999";
//創建數據庫hello
stat.executeUpdate("CREATE DATABASE IF NOT EXISTS "+dataBaseName+" default charset utf8 COLLATE utf8_general_ci; ");
//打開創建的數據庫
stat.close();
conn.close();
url=url.replace("ecsb_dev", dataBaseName);
conn = DriverManager.getConnection(url, "root", "123456");
stat = conn.createStatement();
SQLExec sqlExec = new SQLExec();
sqlExec.setDriver("com.mysql.jdbc.Driver");
sqlExec.setUrl(url);
sqlExec.setUserid("root");
sqlExec.setPassword("1qaz@WSX");
//要執行的腳本
sqlExec.setSrc(new File("D:\\work_code\\version2\\ecsb-parent\\ecsb-springboot\\src\\main\\resources\\db.sql"));
sqlExec.setPrint(true); //設置是否輸出
sqlExec.setEncoding("utf8");
sqlExec.setProject(new Project());
sqlExec.execute();
/* new SQL(){
public SQL SELECT(String columns) {};
return "";
}*/
/* //創建表test
// stat.executeUpdate("create table test(id int, name varchar(80))");
//添加數據
stat.executeUpdate("insert into test values(1, '張三')");
stat.executeUpdate("insert into test values(2, '李四')");*/
/*ScriptRunner runner = new ScriptRunner(conn);
runner.setAutoCommit(true);
runner.setErrorLogWriter(null);
runner.setLogWriter(null);
// runner.runScript(new InputStreamReader(new FileInputStream("D:\\work_code\\version2\\ecsb-parent\\ecsb-springboot\\src\\main\\resources\\db.sql"),"gbk"));
InputStreamReader reader = new InputStreamReader(Resources.getResourceAsStream("db.sql"), "UTF-8");
Resources.setCharset(Charset.forName("UTF8"));
// runner.runScript(Resources.getResourceAsReader("db.sql"));
runner.runScript(reader);*/
//查詢數據
ResultSet result = stat.executeQuery("select * from api_token");
while (result.next())
{
System.out.println(result.getInt("id") + " " + result.getString("creater"));
}

//關閉數據庫
result.close();
stat.close();
// runner.closeConnection();
conn.close();
}

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM