1月14日java假期学习读书笔记

一、学习目标
掌握使用JDBC执行更新操作(插入、删除、修改数据)。
学习PreparedStatement的使用方法及其优势。
通过实际代码练习,熟悉数据库操作的完整流程。
二、学习内容
(一)JDBC更新操作
执行更新操作
使用Statement或PreparedStatement执行SQL的INSERT、UPDATE和DELETE语句。
这些操作通过executeUpdate()方法执行,返回一个整数,表示影响的行数。
示例代码
插入数据:
java
复制
String insertSql = "INSERT INTO students (name, age) VALUES ('Alice', 20)";
int rowsAffected = statement.executeUpdate(insertSql);
System.out.println("插入成功,影响行数:" + rowsAffected);
更新数据:
java
复制
String updateSql = "UPDATE students SET age = 21 WHERE name = 'Alice'";
int rowsAffected = statement.executeUpdate(updateSql);
System.out.println("更新成功,影响行数:" + rowsAffected);
删除数据:
java
复制
String deleteSql = "DELETE FROM students WHERE name = 'Alice'";
int rowsAffected = statement.executeUpdate(deleteSql);
System.out.println("删除成功,影响行数:" + rowsAffected);
(二)PreparedStatement的使用
什么是PreparedStatement?
PreparedStatement是Statement的子接口,用于执行预编译的SQL语句。
它可以提高性能,防止SQL注入攻击。
PreparedStatement的优势
预编译SQL语句:提高执行效率。
参数化查询:通过占位符?设置参数,避免SQL注入。
可重复执行:适用于多次执行相同SQL语句的场景。
示例代码
插入数据:
java
复制
String insertSql = "INSERT INTO students (name, age) VALUES (?, ?)";
PreparedStatement pstmt = connection.prepareStatement(insertSql);
pstmt.setString(1, "Bob");
pstmt.setInt(2, 22);
int rowsAffected = pstmt.executeUpdate();
System.out.println("插入成功,影响行数:" + rowsAffected);
更新数据:
java
复制
String updateSql = "UPDATE students SET age = ? WHERE name = ?";
PreparedStatement pstmt = connection.prepareStatement(updateSql);
pstmt.setInt(1, 23);
pstmt.setString(2, "Bob");
int rowsAffected = pstmt.executeUpdate();
System.out.println("更新成功,影响行数:" + rowsAffected);
(三)事务处理
事务的概念
事务是一组操作的集合,要么全部成功,要么全部失败。
在JDBC中,可以通过设置事务的隔离级别和手动提交/回滚事务来控制事务。
默认事务模式
JDBC的默认事务模式是自动提交(auto-commit),每次执行更新操作后,事务自动提交。
手动事务管理
关闭自动提交:
java
复制
connection.setAutoCommit(false);
提交事务:
java
复制
connection.commit();
回滚事务:
java
复制
connection.rollback();
示例代码
java
复制
connection.setAutoCommit(false); // 关闭自动提交
try {
String insertSql = "INSERT INTO students (name, age) VALUES (?, ?)";
PreparedStatement pstmt = connection.prepareStatement(insertSql);
pstmt.setString(1, "Charlie");
pstmt.setInt(2, 24);
pstmt.executeUpdate();

String updateSql = "UPDATE students SET age = ? WHERE name = ?";
PreparedStatement updateStmt = connection.prepareStatement(updateSql);
updateStmt.setInt(1, 25);
updateStmt.setString(2, "Charlie");
updateStmt.executeUpdate();

connection.commit(); // 提交事务
System.out.println("事务提交成功!");

} catch (Exception e) {
connection.rollback(); // 回滚事务
System.out.println("事务回滚!");
e.printStackTrace();
} finally {
connection.setAutoCommit(true); // 恢复自动提交
}
三、学习心得
PreparedStatement的重要性:
使用PreparedStatement可以有效防止SQL注入攻击,同时提高执行效率。
参数化查询让代码更加清晰和安全。
事务管理的作用:
事务确保了数据库操作的原子性,避免部分操作成功导致数据不一致的问题。
手动事务管理在复杂的业务逻辑中非常有用。
实践的重要性:
通过实际编写代码,我更好地理解了JDBC更新操作和事务管理的使用方法。
练习是巩固知识的最佳方式。

posted @ 2025-02-19 23:26  头发少的文不识  阅读(35)  评论(0)    收藏  举报