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