PreparedStatement代码
时间: 2024-08-17 20:02:22 浏览: 45
Java代码审计案例及修复
`PreparedStatement`是Java JDBC API中的一种特殊类型的Statement,用于执行预编译的SQL语句,它可以提供更好的性能和安全性。当你准备执行一些经常使用的、结构相似的SQL操作时,例如插入、更新或查询数据,使用`PreparedStatement`通常比直接使用`Statement`更高效,因为它会防止SQL注入攻击,并且数据库服务器只需要解析一次SQL语句。
下面是一个简单的`PreparedStatement`插入数据的例子,假设我们有一个名为`users`的表,包含`id`, `name`, 和 `email`字段:
```java
String sql = "INSERT INTO users (id, name, email) VALUES (?, ?, ?)";
try (Connection conn = DriverManager.getConnection(url, username, password);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
for (int i = 1; i <= 1000000; i++) {
pstmt.setInt(1, i); // 设置第一个占位符为整数i
pstmt.setString(2, "User" + i); // 设置第二个占位符为字符串
pstmt.setString(3, "user" + i + "@example.com"); // 设置第三个占位符为字符串
// 批量插入
if ((i % 1000) == 0) {
pstmt.executeBatch(); // 每1000行执行一次批量插入
}
}
// 当所有数据都插入完后再执行一次批量操作,提交事务
pstmt.executeBatch();
} catch (SQLException e) {
e.printStackTrace();
}
```
在这个例子中,`?`是占位符,它们会被实际值替换。通过`setXXX()`方法设置值,而不是直接拼接到SQL语句中,保证了安全性和性能。
阅读全文