パラメーターでの SQL ステートメントの使用
IN パラメーターを含む SQL ステートメントを使用して SQL Server データベース内のデータを操作するには、SQLServerPreparedStatement クラスの executeQuery メソッドを使用して、要求されたデータを含む SQLServerResultSet を返します。 この場合、最初に SQLServerConnection クラスの prepareStatement メソッドを使用して、SQLServerPreparedStatement オブジェクトを作成する必要があります。
SQL ステートメントを作成する場合、IN パラメータは ? (疑問符) 文字で指定します。これはパラメータ値のプレースホルダになり、後で SQL ステートメントに渡されます。 パラメーターの値を指定するには、SQLServerPreparedStatement クラスの setter メソッドの 1 つを使用できます。 使用する setter メソッドは、SQL ステートメントに渡す値のデータ型によって決定されます。
setter メソッドに値を渡す場合は、SQL ステートメントで使用する実際の値だけでなく、SQL ステートメント内のパラメータの順序も指定する必要があります。 たとえば、SQL ステートメントにパラメーターが 1 つ存在する場合、その序数値は 1 になります。 ステートメントに 2 つのパラメーターが含まれている場合、1 つ目の序数値は 1 に、2 つ目の序数値は 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();
}
}