項目中有一個需求要動態建立數據庫而且要動態鏈接數據庫,原本覺得還很難實現呢,在網上找了很久,都不是很理想,最後看到有人說建立數據庫時,先鏈接到任意一個數據庫,得到鏈接後用createStatement()語句建立本身的數據庫,本身試了一下,果真能夠.動態鏈接數據庫就跟簡單了!下面是代碼,僅供參考!這些在jdbc裏面實現的,若是是用hibernate的話,不知道怎麼樣,我沒有試過!java
package com.cn.javaEE.dataSource;mysql
import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;sql
public class CreateDataSource {數據庫
/*** @param args*/public static void main(String[] args) { // TODO Auto-generated method stub String database = "test2"; new CreateDataSource().getConn(database);}url
String mysqlDriver = "com.mysql.jdbc.Driver";String url = "jdbc:mysql://localhost:3306/test1";String newUrl = "jdbc:mysql://localhost:3306/";String username = "root";String password = "root";Connection conn = null;Connection newConn = null;hibernate
public Connection getConn(String database) {get
try { Class.forName(mysqlDriver); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { String tableSql = "create table t_user (username varchar(50) not null primary key," + "password varchar(20) not null ); "; String databaseSql = "create database " + database;io
conn = DriverManager.getConnection(url, username, password); Statement smt = conn.createStatement(); if (conn != null) { System.out.println("數據庫鏈接成功!");table
smt.executeUpdate(databaseSql);class
newConn = DriverManager.getConnection(newUrl + database, username, password); if (newConn != null) { System.out.println("已經鏈接到新建立的數據庫:" + database);
Statement newSmt = newConn.createStatement(); int i = newSmt.executeUpdate(tableSql);//DDL語句返回值爲0; if (i == 0) { System.out.println(tableSql + "表已經建立成功!"); } } }
} catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } return conn;}}