使用含参数的 SQL 语句

下载 JDBC 驱动程序

若要使用包含 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 语句,使用一个字符串参数值运行该语句,然后从结果集中读取结果。

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();
    }
}

另请参阅

使用 SQL 语句