将 SQL 语句与参数一起使用
若要使用包含 IN 参数的 SQL 语句处理 SQL Server 数据库中的数据,可以使用 SQLServerPreparedStatement 类的 executeQuery 方法返回将包含所请求数据的 SQLServerResultSet。 若要执行此操作,必须首先使用 SQLServerConnection 类的 prepareStatement 方法创建一个 SQLServerPreparedStatement 对象。
构造 SQL 语句时,可使用 ?(问号)字符指定 IN 参数, 该问号将用作随后传递到 SQL 语句中的参数值的占位符。 可以使用 SQLServerPreparedStatement 类的 setter 方法之一为参数指定值。 使用的 setter 方法由要传递到 SQL 语句中的值的数据类型确定。
向 setter 方法传递值时,不仅需要指定要在 SQL 语句中使用的实际值,还必须指定参数在 SQL 语句中的序数位置。 例如,如果 SQL 语句包含单个参数,则其序数值为 1。 如果该语句包含两个参数,则第一个序数值为 1,第二个序数值为 2。
在以下示例中,将打开到 AdventureWorks2022 示例数据库的连接传递给函数,构造并运行 SQL 准备的语句包含单个 String 参数值,然后从结果集中读取结果。
public static void executeStatement(Connection con) {
try(PreparedStatement pstmt = con.prepareStatement("SELECT LastName, FirstName FROM Person.Contact WHERE LastName = ?");) {
pstmt.setString(1, "Smith");
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
System.out.println(rs.getString("LastName") + ", " + rs.getString("FirstName"));
}
}
// Handle any errors that may have occurred.
catch (SQLException e) {
e.printStackTrace();
}
}