网络编程与数据库连接:数据库操作¶
在本章中,我们将学习如何使用Java Database Connectivity (JDBC) 进行数据库操作。JDBC是Java中用于与数据库进行交互的标准API。通过JDBC,我们可以执行SQL语句、处理查询结果、以及管理数据库连接。
JDBC简介¶
JDBC(Java Database Connectivity)是Java提供的一套用于执行SQL语句的API。它允许Java应用程序与各种关系型数据库进行交互。JDBC API主要包括以下几个核心接口和类:
DriverManager
:用于管理数据库驱动程序的列表。Connection
:表示与数据库的连接。Statement
:用于执行静态SQL语句并返回结果。PreparedStatement
:用于执行预编译的SQL语句。ResultSet
:表示数据库查询的结果集。
JDBC的基本步骤¶
使用JDBC进行数据库操作通常包括以下步骤:
- 加载数据库驱动程序:使用
Class.forName()
方法加载数据库驱动程序。 - 建立数据库连接:使用
DriverManager.getConnection()
方法建立与数据库的连接。 - 创建Statement对象:使用
Connection.createStatement()
方法创建Statement
对象。 - 执行SQL语句:使用
Statement.executeQuery()
或Statement.executeUpdate()
方法执行SQL语句。 - 处理结果集:如果执行的是查询语句,使用
ResultSet
对象处理查询结果。 - 关闭连接:使用
Connection.close()
方法关闭数据库连接。
代码示例¶
示例1:连接到数据库¶
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnectToDatabase {
public static void main(String[] args) {
// JDBC URL, username, and password of MySQL server
String url = "jdbc:mysql://localhost:3306/mydatabase";
String user = "root";
String password = "password";
// 1. Load the JDBC driver
try {
Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e) {
System.out.println("MySQL JDBC Driver not found.");
e.printStackTrace();
return;
}
// 2. Establish the connection
try (Connection connection = DriverManager.getConnection(url, user, password)) {
if (connection != null) {
System.out.println("Connected to the database!");
} else {
System.out.println("Failed to make connection!");
}
} catch (SQLException e) {
System.out.println("Connection Failed! Check output console");
e.printStackTrace();
}
}
}
解释: - 我们首先加载MySQL的JDBC驱动程序。 - 然后使用DriverManager.getConnection()
方法建立与数据库的连接。 - 如果连接成功,程序将输出“Connected to the database!”。
示例2:执行SQL查询¶
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class ExecuteQuery {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydatabase";
String user = "root";
String password = "password";
try (Connection connection = DriverManager.getConnection(url, user, password);
Statement statement = connection.createStatement()) {
// 3. Execute a query
String sql = "SELECT id, name, email FROM users";
ResultSet resultSet = statement.executeQuery(sql);
// 4. Process the result set
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
String email = resultSet.getString("email");
System.out.println("ID: " + id + ", Name: " + name + ", Email: " + email);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
解释: - 我们首先建立与数据库的连接。 - 然后创建一个Statement
对象,并使用它执行SQL查询。 - 查询结果存储在ResultSet
对象中,我们通过遍历ResultSet
来获取每一行的数据。
示例3:插入数据¶
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class InsertData {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydatabase";
String user = "root";
String password = "password";
String sql = "INSERT INTO users (name, email) VALUES (?, ?)";
try (Connection connection = DriverManager.getConnection(url, user, password);
PreparedStatement preparedStatement = connection.prepareStatement(sql)) {
// 3. Set the parameters
preparedStatement.setString(1, "John Doe");
preparedStatement.setString(2, "john.doe@example.com");
// 4. Execute the insert statement
int rowsInserted = preparedStatement.executeUpdate();
if (rowsInserted > 0) {
System.out.println("A new user was inserted successfully!");
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
解释: - 我们使用PreparedStatement
来执行SQL插入语句。 - PreparedStatement
允许我们使用占位符(?
)来设置参数,这样可以防止SQL注入攻击。 - 执行executeUpdate()
方法后,返回受影响的行数。
练习题¶
练习题1:查询特定用户¶
编写一个Java程序,查询数据库中users
表中id
为1的用户信息,并打印出该用户的name
和email
。
练习题2:更新用户信息¶
编写一个Java程序,更新users
表中id
为1的用户的email
为new.email@example.com
。
练习题3:删除用户¶
编写一个Java程序,删除users
表中id
为1的用户。
总结¶
在本章中,我们学习了如何使用JDBC进行数据库操作。我们介绍了JDBC的基本概念和步骤,并通过代码示例演示了如何连接到数据库、执行SQL查询、以及插入数据。我们还提供了一些练习题,帮助您巩固所学知识。
关键点: - JDBC是Java中用于与数据库进行交互的标准API。 - 使用JDBC进行数据库操作的基本步骤包括加载驱动程序、建立连接、创建Statement对象、执行SQL语句、处理结果集、以及关闭连接。 - PreparedStatement
可以防止SQL注入攻击,并且比Statement
更高效。
通过掌握这些知识,您将能够在Java应用程序中有效地进行数据库操作。