Prepared Statements
在发现 SQL 注入漏洞后,CityBook Libraries 需要您加固图书搜索功能。请将简单的 Statement 切换为 PreparedStatement,以防止注入攻击。
HikariSetup 类已配置完成。
本练习是课程的一部分
在 Java 中查询 PostgreSQL 数据库
练习说明
- 为标题参数使用占位符。
- 通过连接创建一个
PreparedStatement。 - 为该预处理语句设置
title参数。
交互式实操练习
通过完成这段示例代码来试试这个练习。
public class Main {
public static void main(String[] args) throws SQLException {
HikariDataSource ds = HikariSetup.createDataSource();
// Set the parameter in the query
String query = "SELECT * FROM books WHERE title = ____";
// Create the prepared statement
try (Connection conn = ds.getConnection();
PreparedStatement pstmt = ____.____(query)) {
// Set the title parameter
pstmt.____(____, "Clean Code");
try (ResultSet rs = pstmt.executeQuery()) {
while (rs.next()) {
System.out.printf("ID: %d, Title: %s (%d)%n", rs.getInt("book_id"), rs.getString("title"), rs.getInt("publication_year"));
}
}
}
}
}