在Java中建立数据库通常涉及使用JDBC(Java Database Connectivity)技术,通过标准化的API与不同数据库进行交互,以下是详细的步骤和代码示例,帮助开发者完成数据库的建立与连接。

准备工作
在开始之前,确保已安装以下工具:
- JDK:Java开发工具包,建议使用JDK 8或更高版本。
- 数据库:如MySQL、PostgreSQL、SQLite等,以MySQL为例。
- JDBC驱动:下载对应数据库的JDBC驱动JAR包(如MySQL的
mysql-connector-java),并将其添加到项目的类路径中。
加载数据库驱动
JDBC通过驱动管理器(DriverManager)与数据库建立连接,首先需加载驱动类:
try {
Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e) {
System.err.println("未找到MySQL驱动类");
e.printStackTrace();
}
对于新版本MySQL,驱动类名为com.mysql.cj.jdbc.Driver。
建立数据库连接
使用DriverManager.getConnection()方法获取连接对象,需提供数据库URL、用户名和密码:

String url = "jdbc:mysql://localhost:3306/?serverTimezone=UTC";
String username = "root";
String password = "your_password";
try (Connection connection = DriverManager.getConnection(url, username, password)) {
System.out.println("数据库连接成功!");
} catch (SQLException e) {
System.err.println("连接失败:" + e.getMessage());
}
- URL格式:
jdbc:mysql://主机名:端口/数据库名?参数,若未指定数据库名,可连接到服务器后创建。 - 时区参数:
serverTimezone=UTC避免MySQL 8.0+的时区警告。
创建数据库与表
若数据库不存在,可通过SQL语句动态创建:
String createDbSql = "CREATE DATABASE IF NOT EXISTS mydb";
String createTableSql = "CREATE TABLE IF NOT EXISTS users (" +
"id INT AUTO_INCREMENT PRIMARY KEY, " +
"name VARCHAR(50), " +
"email VARCHAR(100))";
try (Connection conn = DriverManager.getConnection(url, username, password);
Statement stmt = conn.createStatement()) {
stmt.executeUpdate(createDbSql);
System.out.println("数据库创建成功");
// 切换到新数据库并创建表
conn.setCatalog("mydb");
stmt.executeUpdate(createTableSql);
System.out.println("表创建成功");
} catch (SQLException e) {
e.printStackTrace();
}
执行增删改查操作
通过Statement或PreparedStatement执行SQL语句:
String insertSql = "INSERT INTO users (name, email) VALUES (?, ?)";
try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", username, password);
PreparedStatement pstmt = conn.prepareStatement(insertSql)) {
pstmt.setString(1, "张三");
pstmt.setString(2, "zhangsan@example.com");
pstmt.executeUpdate();
System.out.println("数据插入成功");
} catch (SQLException e) {
e.printStackTrace();
}
关闭资源
为确保资源释放,建议使用try-with-resources自动关闭Connection、Statement和ResultSet:
try (Connection conn = DriverManager.getConnection(url, username, password);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM users")) {
while (rs.next()) {
System.out.println(rs.getString("name"));
}
} catch (SQLException e) {
e.printStackTrace();
}
FAQs
Q1: 如何解决“Access denied for user”错误?
A1: 此错误通常因用户名或密码错误导致,检查MySQL中用户权限,确保用户具有连接和创建数据库的权限,或使用GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost'授权。

Q2: JDBC连接时出现“No suitable driver found”怎么办?
A2: 确保JDBC驱动JAR包已正确添加到项目类路径中,若使用Maven,在pom.xml中添加依赖:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>