使用含參數的 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 備妥的陳述式並使用單一 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();
    }
}

另請參閱

使用 SQL 陳述式