次の方法で共有


パラメータがある 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 で、2 番目の序数値は 2 になります。

次の例は、SQL Server 2005 AdventureWorks サンプル データベースに対して開いている接続を関数に渡し、準備された SQL ステートメントを作成して 1 つの String のパラメータ値で実行し、その結果を結果セットから読み取って出力します。

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

参照

その他の技術情報

SQL でのステートメントの使用