一、准备工作
导入JDBC驱动库 根据所使用的数据库类型,导入相应的JDBC驱动JAR包。例如:
- MySQL: `mysql-connector-java-x.x.x.jar`
- SQL Server: `mssql-jdbc-x.x.x.jar`
- Oracle: `ojdbc8.jar`
将JAR包添加到项目的类路径中(如Eclipse的`lib`目录或Java的`CLASSPATH`环境变量)。
二、核心连接步骤
加载JDBC驱动程序
- 传统方式(JDBC 3.x):使用`Class.forName()`加载驱动类
```java
Class.forName("com.mysql.cj.jdbc.Driver");
```
- 推荐方式(JDBC 4.0+):驱动程序自动加载,无需显式调用,但需确保驱动在类路径中。
建立数据库连接
使用`DriverManager.getConnection()`方法,提供数据库URL、用户名和密码。
- URL格式: ``` jdbc:数据库类型://主机名:端口号/数据库名 ``` 例如MySQL:`jdbc:mysql://localhost:3306/mydatabase`(主机名和端口可省略)。 创建Statement对象
通过连接对象创建`Statement`,用于执行SQL语句。
```java
Statement st = conn.createStatement();
```
执行SQL语句并处理结果集
- 执行查询:
```java
ResultSet rs = st.executeQuery("SELECT * FROM student");
```
- 处理结果:遍历`ResultSet`对象,获取数据。
关闭资源
操作完成后,需关闭`ResultSet`、`Statement`和`Connection`对象以释放资源。
```java
rs.close();
st.close();
conn.close();
```
三、注意事项
驱动版本匹配
- 确保JDBC驱动版本与数据库版本兼容。例如,MySQL 8.0需使用`com.mysql.cj.jdbc.Driver`而非旧版`com.mysql.jdbc.Driver`。
异常处理
使用`try-catch`块捕获`ClassNotFoundException`、`SQLException`等异常,避免程序崩溃。
连接池优化
对于高并发场景,建议使用连接池(如HikariCP)管理数据库连接,提升性能。
四、示例代码(完整流程)
```java
import java.sql.*;
public class JDBCExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydatabase?useSSL=false&characterEncoding=UTF-8";
String user = "root";
String password = "";
try (Connection conn = DriverManager.getConnection(url, user, password);
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM student")) {
while (rs.next()) {
System.out.println(rs.getString("name") + "\t" + rs.getInt("age"));
}
} catch (ClassNotFoundException e) {
System.out.println("驱动加载失败");
e.printStackTrace();
} catch (SQLException e) {
System.out.println("数据库操作失败");
e.printStackTrace();
}
}
}
```
通过以上步骤,您可以在Java程序中成功连接数据库并执行基本操作。根据具体需求,可进一步优化代码,例如使用`PreparedStatement`防止SQL注入,或集成连接池管理工具。