最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Java實(shí)現(xiàn)動(dòng)態(tài)生成MySQL數(shù)據(jù)庫(kù)

 更新時(shí)間:2024年02月18日 08:17:39   作者:哪里的破水瓶  
這篇文章主要為大家詳細(xì)介紹了如何使用Java實(shí)現(xiàn)動(dòng)態(tài)生成MySQL數(shù)據(jù)庫(kù),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

Java 動(dòng)態(tài)生成 MYsql 數(shù)據(jù)庫(kù)

首先準(zhǔn)備一個(gè)類,表示用于生成數(shù)據(jù)庫(kù)等操作。

/*
  TenantDatabaseDTO 用于傳遞租戶數(shù)據(jù)庫(kù)相關(guān)的信息。
 */
public class TenantDatabaseDTO {
    // 數(shù)據(jù)庫(kù)名稱
    private String tenantDatabase;
    // 數(shù)據(jù)庫(kù)用戶
    private String dbUser;
    // 數(shù)據(jù)庫(kù)密碼
    private String dbPass;
    // 管理員名稱
    private String adminName;
    // 管理員密碼
    private String adminPass;
    // 名稱
    private String tenantName;
    // 數(shù)據(jù)庫(kù)連接 URL
    private String url;
}

接下來(lái)我們開始連接數(shù)據(jù)庫(kù)操作

我們首先創(chuàng)建數(shù)據(jù)庫(kù)連接,Statement 是執(zhí)行語(yǔ)句對(duì)象,用于執(zhí)行 sql,Connection 是連接對(duì)象,可以通過(guò) setAutoCommit 開啟一個(gè)事務(wù),也就是不會(huì)自動(dòng)提交。

// url
String url = "jdbc:mysql://" + host + ":" + port + "/";

// 數(shù)據(jù)庫(kù)賬戶密碼
String username = "root";
String password = "1234";

// 獲取數(shù)據(jù)庫(kù)連接
Connection conn = DriverManager.getConnection(url, username, password);
// 執(zhí)行語(yǔ)句對(duì)象
Statement stmt = null;
// 關(guān)閉自動(dòng)提交事務(wù)
conn.setAutoCommit(false);
// 創(chuàng)建執(zhí)行語(yǔ)句對(duì)象
stmt = conn.createStatement();

創(chuàng)建數(shù)據(jù)庫(kù)

我們拼接一個(gè) SQL 用于創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),通過(guò)執(zhí)行語(yǔ)句的 execute 方法執(zhí)行,由于我們開啟了事務(wù),最后提交事務(wù)才能完成創(chuàng)建。

// 數(shù)據(jù)庫(kù)名稱
String database = "newDataBase";
// 創(chuàng)建庫(kù)
String createDatabaseSQL = "CREATE DATABASE IF NOT EXISTS `" + database + "` DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;";
// 執(zhí)行語(yǔ)句
stmt.execute(createDatabaseSQL);

這里由于我的業(yè)務(wù)需要給特定的數(shù)據(jù)庫(kù)做專門的賬戶密碼,所以下面需要再次執(zhí)行兩個(gè),創(chuàng)建用戶以及分配該數(shù)據(jù)的權(quán)限

String databasePassword = "1234";
// 在這里要?jiǎng)?chuàng)建用戶,并且存入相應(yīng)用戶和密碼
String userSQL = "CREATE USER '" + database + "'@'localhost' IDENTIFIED BY '" + databasePassword + "';";
stmt.execute(userSQL);

//用戶授權(quán)
String grantSQL = "GRANT select, insert, update, delete ON " + database + ".* TO '" + database + "'@'localhost'";
stmt.execute(grantSQL);

切換到剛剛的數(shù)據(jù)庫(kù)

// 切換到數(shù)據(jù)庫(kù)
conn.setCatalog(tenantDatabase);

執(zhí)行 SQL 腳本

ScriptRunner 類用于執(zhí)行SQL腳本,需要和數(shù)據(jù)庫(kù)連接 Connection 一起使用。因?yàn)樾枰獋鬟f連接器。

ScriptRunner runner = new ScriptRunner(connection);
// 禁用一般日志
runner.setLogWriter(null);
// 禁用錯(cuò)誤日志
runner.setErrorLogWriter(null);
// 從資源中獲取 SQL 腳本的 Reader,位于 resources 目錄下 init-sql-script下的文件,讀取之后并執(zhí)行。
Reader reader = Resources.getResourceAsReader("init-sql-script/erp-crm-tenant-sample.sql");
// 最后記得將事務(wù)提交
conn.commit();

小技巧

這樣也可以更好的提交數(shù)據(jù)。

SqlRunner sqlRunner = new SqlRunner(conn);
//插入部門
String insertSql = "INSERT INTO sys_dept VALUES (100, 0, '0', '" + tenantDatabaseDTO.getTenantName() + "', 0, '" + tenantDatabaseDTO.getTenantName() + "', '00000000000', 'admin@admin.com', '0', '0', 'admin', '" + DateUtils.getTime() + "', 'admin', '" + DateUtils.getTime() + "');";
sqlRunner.run(insertSql);

到此這篇關(guān)于使用Java實(shí)現(xiàn)動(dòng)態(tài)生成MySQL數(shù)據(jù)庫(kù)的文章就介紹到這了,更多相關(guān)Java生成MySQL數(shù)據(jù)庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

宁武县| 济阳县| 青冈县| 东港市| 嘉黎县| 克山县| 鱼台县| 高尔夫| 东乌珠穆沁旗| 大邑县| 太仆寺旗| 荔浦县| 桑日县| 鹤山市| 改则县| 嘉峪关市| 越西县| 娱乐| 甘洛县| 高密市| 阿瓦提县| 河津市| 内丘县| 桦南县| 岑溪市| 中牟县| 高雄县| 新乡市| 凤冈县| 依安县| 清远市| 苗栗市| 淳化县| 阿城市| 京山县| 辽中县| 思茅市| 赣榆县| 吴川市| 平湖市| 肥东县|