5月27日数据库学习笔记

一、JDBC 概述
JDBC(Java Database Connectivity) 是 Java 语言中用于执行 SQL 语句的 API,它提供了一种标准的方法,使 Java 程序能够与各种关系型数据库进行交互。JDBC 使得 Java 程序可以独立于数据库管理系统(DBMS)进行数据操作,从而实现跨数据库的通用数据访问。
(一)JDBC 的重要性
跨数据库通用性:通过 JDBC,Java 程序可以使用相同的接口访问不同的数据库,如 MySQL、Oracle、SQL Server 等,只需加载对应的数据库驱动程序即可。
数据操作便捷性:JDBC 提供了丰富的 API,用于执行 SQL 查询、更新、插入和删除操作,简化了数据库编程的复杂性。
与 Java 的无缝集成:作为 Java 的一部分,JDBC 可以与 Java 的其他技术(如 Java EE、Spring 等)无缝集成,构建复杂的数据库应用。
二、JDBC 的基本组成
(一)JDBC 驱动程序
定义:JDBC 驱动程序是实现 JDBC API 的软件组件,它允许 Java 程序与特定的数据库进行通信。不同的数据库需要不同的驱动程序。
加载驱动程序:在使用 JDBC 之前,必须加载对应的数据库驱动程序。这通常通过调用 Class.forName() 方法来完成。
java

Class.forName("com.mysql.cj.jdbc.Driver");
(二)数据库连接
定义:通过 JDBC 连接到数据库,需要建立一个数据库连接(Connection 对象)。连接对象用于管理与数据库的会话。
建立连接:使用 DriverManager.getConnection() 方法建立连接。需要提供数据库的 URL、用户名和密码。
java

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "username", "password");
(三)语句对象
定义:语句对象(Statement 或 PreparedStatement)用于执行 SQL 语句。
类型:
Statement:用于执行静态 SQL 语句,适用于简单的查询和更新操作。
java

Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM users");
PreparedStatement:用于执行参数化的 SQL 语句,可以防止 SQL 注入攻击,适用于复杂的查询和更新操作。
java

PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM users WHERE name = ?");
pstmt.setString(1, "Alice");
ResultSet rs = pstmt.executeQuery();
(四)结果集
定义:结果集(ResultSet)是执行查询语句后返回的数据集合,它提供了对查询结果的访问。
操作结果集:通过 ResultSet 提供的方法(如 next()、getString()、getInt() 等)来遍历和访问查询结果。
java

while (rs.next()) {
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.println("Name: " + name + ", Age: " + age);
}
三、JDBC 的基本操作流程
(一)加载驱动程序
java

Class.forName("com.mysql.cj.jdbc.Driver");
(二)建立数据库连接
java

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "username", "password");
(三)创建语句对象
java

Statement stmt = conn.createStatement();
(四)执行 SQL 语句
查询操作:
java

ResultSet rs = stmt.executeQuery("SELECT * FROM users");
while (rs.next()) {
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.println("Name: " + name + ", Age: " + age);
}
更新操作:
java

int rowsAffected = stmt.executeUpdate("INSERT INTO users (name, age) VALUES ('Alice', 25)");
System.out.println("Rows affected: " + rowsAffected);
(五)处理结果集(如果是查询操作)
java

while (rs.next()) {
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.println("Name: " + name + ", Age: " + age);
}
(六)关闭资源

rs.close();
stmt.close();
conn.close();

posted @ 2025-05-27 23:38  头发少的文不识  阅读(13)  评论(0)    收藏  举报