PreparedStatement是Java JDBC API中的一个接口,用于执行预编译的SQL语句。与Statement相比,它提供了更高的安全性、性能和可读性。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class InsertExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydatabase";
String username = "user";
String password = "password";
String sql = "INSERT INTO users (username, email, age) VALUES (?, ?, ?)";
try (Connection conn = DriverManager.getConnection(url, username, password);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
// 设置参数
pstmt.setString(1, "john_doe");
pstmt.setString(2, "john@example.com");
pstmt.setInt(3, 30);
// 执行插入
int rowsAffected = pstmt.executeUpdate();
System.out.println(rowsAffected + " row(s) inserted.");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
PreparedStatement也支持批量操作,提高大量数据插入效率:
try (Connection conn = DriverManager.getConnection(url, username, password);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
for (int i = 0; i < 100; i++) {
pstmt.setString(1, "user_" + i);
pstmt.setString(2, "user_" + i + "@example.com");
pstmt.setInt(3, 20 + (i % 10));
pstmt.addBatch(); // 添加到批处理
if (i % 20 == 0) { // 每20条执行一次
pstmt.executeBatch();
}
}
pstmt.executeBatch(); // 执行剩余的批处理
} catch (SQLException e) {
e.printStackTrace();
}
没有搜到相关的文章