DriverManager
建立连接后,用Statement
执行SQL的CREATE DATABASE
命令。,“java,Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/", "user", "pass");,Statement stmt = conn.createStatement();,stmt.executeUpdate("CREATE DATABASE mydb");,
“,需提前确保数据库服务运行且驱动正确加载。核心步骤
环境准备
- 安装数据库服务(以MySQL为例)并启动服务。
- 添加JDBC驱动依赖(Maven配置):
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> </dependency>
建立数据库连接
连接数据库服务器(无需指定具体库名):
// 加载驱动(JDBC 4.0+ 可省略) Class.forName("com.mysql.cj.jdbc.Driver"); // 配置连接参数(用户需有CREATE权限) String url = "jdbc:mysql://localhost:3306?useSSL=false&serverTimezone=UTC"; String user = "root"; String password = "your_password"; try (Connection conn = DriverManager.getConnection(url, user, password)) { // 后续操作 }
执行SQL创建数据库
通过Statement
执行DDL命令:
try (Statement stmt = conn.createStatement()) { String sql = "CREATE DATABASE IF NOT EXISTS my_new_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"; stmt.executeUpdate(sql); System.out.println("数据库创建成功!"); }
完整代码示例
import java.sql.*; public class CreateDatabaseExample { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306?useSSL=false"; String user = "root"; String password = "securePass123"; try (Connection conn = DriverManager.getConnection(url, user, password); Statement stmt = conn.createStatement()) { // 创建数据库 String createDbSQL = "CREATE DATABASE IF NOT EXISTS inventory_system"; stmt.executeUpdate(createDbSQL); // 验证创建结果 ResultSet rs = stmt.executeQuery("SHOW DATABASES LIKE 'inventory_system'"); if (rs.next()) { System.out.println("数据库已存在,名称: " + rs.getString(1)); } } catch (SQLException e) { System.err.println("SQL错误: " + e.getMessage()); } catch (Exception e) { e.printStackTrace(); } } }
关键注意事项
-
权限要求
数据库用户需具备CREATE
权限(通常为管理员账号),生产环境应避免使用高权限账户。 -
异常处理
必须捕获SQLException
,处理网络中断、语法错误或权限问题:try { // 数据库操作 } catch (SQLException e) { System.err.println("错误代码: " + e.getErrorCode()); System.err.println("SQL状态: " + e.getSQLState()); }
-
资源释放
使用try-with-resources
自动关闭连接(JDBC 7+),防止内存泄漏。 -
字符集与排序规则
显式指定字符集(推荐utf8mb4
)支持多语言和特殊字符:CREATE DATABASE my_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
-
安全性
- 禁止拼接用户输入生成SQL(防注入攻击)。
- 配置文件分离敏感信息(如密码),使用环境变量或加密存储。
应用场景建议
- 测试/开发环境:适合自动化初始化数据库。
- 生产环境:通常由DBA手动创建或通过迁移工具(如Flyway)管理,程序仅操作数据表。
常见问题
- 驱动加载失败:检查JAR版本与数据库兼容性(MySQL 8+需
com.mysql.cj.jdbc.Driver
)。 - 连接拒绝:确认数据库服务运行、端口开放及防火墙设置。
- 权限不足:使用
GRANT CREATE ON *.* TO 'user'@'host'
授权。
引用说明:本文遵循Oracle官方JDBC指南及MySQL文档,核心方法基于JDBC 4.2标准,参考资源:
通过Java创建数据库本质是SQL命令的封装,严格遵循权限管理与安全规范可确保系统可靠性。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/32534.html