Java语言数据库编程与JDBC实战
发布时间: 2024-02-22 00:51:43 阅读量: 43 订阅数: 30
# 1. Java语言数据库编程基础
## 1.1 数据库编程概述
在Java开发中,与数据库打交道是非常常见的。数据库编程是指通过编程语言(比如Java)与数据库进行交互,实现数据的增删改查操作。在Java中,使用JDBC(Java Database Connectivity)来实现数据库编程操作。
## 1.2 JDBC简介
JDBC是Java提供的用于操作不同数据库的一种标准接口,它允许开发人员编写能够与不同数据库交互的代码,而无需关注具体数据库的细节。
## 1.3 JDBC驱动类型及选择
JDBC驱动分为四种类型,分别是JDBC-ODBC桥接器驱动、本地API驱动、网络协议驱动和本地协议驱动。在选择JDBC驱动时,需要考虑数据库厂商的支持、性能、稳定性等因素,选择适合自己项目的驱动类型。
接下来,我们将深入探讨Java语言数据库编程基础的知识。
# 2. JDBC连接与数据操作
### 2.1 建立数据库连接
在Java中,我们可以通过JDBC来建立与数据库的连接。首先需要加载数据库驱动,然后通过驱动管理器获取数据库连接。
```java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class JDBCDemo {
public static void main(String[] args) {
Connection conn = null;
// 数据库连接参数
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "password";
try {
// 加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
// 获取数据库连接
conn = DriverManager.getConnection(url, user, password);
System.out.println("数据库连接成功!");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
```
代码说明:
- 首先定义数据库的连接参数,包括URL、用户名和密码。
- 使用`Class.forName`加载数据库驱动。
- 通过`DriverManager.getConnection`获取数据库连接。
- 最后在`finally`块中关闭数据库连接。
### 2.2 执行SQL语句
一旦建立了数据库连接,我们就可以通过Statement或者PreparedStatement来执行SQL语句。
```java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class JDBCDemo {
public static void main(String[] args) {
Connection conn = null;
// 数据库连接参数
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "password";
try {
// 加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
// 获取数据库连接
conn = DriverManager.getConnection(url, user, password);
// 执行SQL语句
String sql = "INSERT INTO users (id, name, age) VALUES (?, ?, ?)";
PreparedStatement preparedStatement = conn.prepareStatement(sql);
preparedStatement.setInt(1, 1);
preparedStatement.setString(2, "John");
preparedStatement.setInt(3, 25);
int rowsAffected = preparedStatement.executeUpdate();
System.out.println("插入成功,影响行数:" + rowsAffected);
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
} finally {
// 关闭数据库连接
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
```
代码说明:
- 使用`PreparedStatement`预编译SQL语句,避免SQL注入攻击。
- 通过`setXXX`方法设置SQL语句中的占位符参数。
- 使用`executeUpdate`方法执行更新操作,并获取受影响的行数。
### 2.3 处理查询结果集
当执行查询操作时,我们需要处理查询结果集并从中获取数据。
```java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class JDBCDemo {
public static void main(String[] args) {
Connection conn = null;
// 数据库连接参数
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "password";
try {
// 加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
// 获取数据库连接
conn = DriverManager.getConnection(url, user, password);
// 执行SQL查询
String sql = "SELECT * FROM users WHERE age > ?";
PreparedStatement preparedStatement = conn.prepareStatement(sql);
preparedStatement.setInt(1, 20);
ResultSet resultSet = preparedStatement.executeQuery();
// 处理查询结果集
while(result
```
0
0