import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.SQLException;public class PreparedStatementExample { public static void main(String[] args) { // 数据库连接URL String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC"; // 数据库用户名 String user = "root"; // 数据库密码 String password = "your_password"; try { // 建立数据库连接 Connection connection = DriverManager.getConnection(url, user, password); // SQL语句,这里是插入数据到名为users的表中,表有name和age两个字段 String sql = "INSERT INTO users (name, age) VALUES (?,?)"; // 创建PreparedStatement工具 PreparedStatement pstm = connection.prepareStatement(sql); // 设置参数 pstm.setString(1, "John"); pstm.setInt(2, 30); // 实行SQL语句 int rowsAffected = pstm.executeUpdate(); if (rowsAffected > 0) { System.out.println("数据插入成功"); } // 关闭PreparedStatement和Connection pstm.close(); connection.close(); } catch (SQLException e) { e.printStackTrace(); } }}
利用 PreparedStatement 进行查询示例以下示例查询 users 表中年事大于某个值的用户:
import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;public class PreparedStatementQueryExample { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC"; String user = "root"; String password = "your_password"; try { Connection connection = DriverManager.getConnection(url, user, password); String sql = "SELECT name, age FROM users WHERE age >?"; PreparedStatement pstm = connection.prepareStatement(sql); pstm.setInt(1, 25); ResultSet rs = pstm.executeQuery(); while (rs.next()) { String name = rs.getString("name"); int age = rs.getInt("age"); System.out.println("姓名: " + name + ", 年事: " + age); } rs.close(); pstm.close(); connection.close(); } catch (SQLException e) { e.printStackTrace(); } }}
利用 PreparedStatement 进行更新操作示例(例如更新用户年事)
import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.SQLException;public class PreparedStatementUpdateExample { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC"; String user = "root"; String password = "your_password"; try { Connection connection = DriverManager.getConnection(url, user, password); String sql = "UPDATE users SET age =? WHERE name =?"; PreparedStatement pstm = connection.prepareStatement(sql); pstm.setInt(1, 35); pstm.setString(2, "John"); int rowsAffected = pstm.executeUpdate(); if (rowsAffected > 0) { System.out.println("数据更新成功"); } pstm.close(); connection.close(); } catch (SQLException e) { e.printStackTrace(); } }}
这些示例展示了 PreparedStatement 在不同数据库操作(插入、查询、更新)中的基本用法,它有助于防止 SQL 注入攻击并且可以提高数据库操作的效率(特殊是在多次实行相同构造的 SQL 语句时)。
