Java JDBC(Java Database Connectivity)是Java编程语言与各种数据库交互的一种标准接口,它允许Java程序通过SQL语句来操作数据库。本教程将详细介绍如何使用Java JDBC访问数据库的全过程,包括连接数据库、执行SQL语句、处理结果集以及关闭资源。
要使用JDBC,我们需要在Java项目中引入数据库驱动的jar包。对于不同的数据库(如MySQL、Oracle、SQL Server等),驱动类和jar包会有所不同。例如,MySQL通常使用`com.mysql.jdbc.Driver`作为驱动类,而对应的jar包是`mysql-connector-java`。
1. **建立数据库连接**
要连接到数据库,我们首先需要加载驱动类并创建一个Connection对象。使用`Class.forName()`方法加载驱动,然后通过`DriverManager.getConnection()`方法创建连接。例如:
```java
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "username", "password");
```
2. **预编译SQL语句与PreparedStatement**
`PreparedStatement`是JDBC提供的一种高效且安全的SQL执行方式。它允许我们在编写SQL时预留占位符,然后在运行时动态传入参数。这不仅提高了效率,还避免了SQL注入攻击。例如,插入数据的SQL语句可以这样写:
```java
String sql = "INSERT INTO my_table (name, age) VALUES (?, ?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "张三");
pstmt.setInt(2, 25);
pstmt.executeUpdate();
```
3. **执行SQL语句**
使用`executeQuery()`或`executeUpdate()`方法执行SQL。前者用于查询返回结果集(ResultSet),后者用于DML(增删改)操作,返回受影响的行数。
4. **处理结果集(ResultSet)**
如果SQL是SELECT查询,执行后会得到一个ResultSet对象。我们可以遍历这个结果集,获取每一行的数据:
```java
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
System.out.println(rs.getString("name") + ", " + rs.getInt("age"));
}
```
5. **关闭资源**
使用完数据库资源后,务必记得关闭,防止内存泄漏。关闭顺序通常是:ResultSet -> Statement -> Connection。
```java
rs.close();
pstmt.close();
conn.close();
```
6. **事务处理**
在多条SQL语句操作时,可能需要使用事务来保证数据的一致性。通过设置Connection的自动提交为false,我们可以手动控制事务的提交或回滚。
7. **异常处理**
在进行数据库操作时,务必捕获并处理可能出现的SQLException,确保程序的健壮性。
总结,Java JDBC提供了全面的数据库操作能力,从连接数据库到执行SQL,再到处理结果,都是通过JDBC API实现。PreparedStatement是其中的重要组成部分,它增强了SQL执行的安全性和效率。在实际开发中,根据具体需求选择合适的方法和策略,可以有效地管理数据库操作。