<sql:update>
xmlns:sql="http://java.sun.com/jsp/jstl/sql"

SYNOPSIS

<sql:update
var="変数名"
scope="page|request|session|application"
sql="SQL"
dataSource="データソース"
>
<sql:param> * -  更新処理の SQL にパラメータを埋め込みます.
<sql:dateParam> * -  更新処理の SQL に日付型のパラメータを埋め込みます.
sql 属性を省略した場合の SQL.
</sql:update>

説 明

タグの内部または sql 属性で定義された更新処理を実行します。 PreparedStatement#executeUpdate() の処理に相当します。

SQL 条件などに可変値を埋め込みたい場合は <sql:param> を使用してください。直接埋め込むと SQL インジェクションなどにつながるため危険です。

属 性

var="変数名"
optional

この処理により更新された件数を格納する変数名です。 java.lang.Integer のインスタンスが格納されます。

scope="page|request|session|application"
optional
var 属性で指定した変数を格納するスコープです。 page, request, session, application のいずれかを指定できます。
sql="SQL"
optional

実行する SQL を指定します。文字列内のプレースホルダ ? はタグ内で定義した <sql:param>, <sql:dateParam> とマップされます。

この sql 属性で定義する以外にタグ内で SQL を指定することも出来ます。

dataSource="データソース"
optional

この更新処理の実行で使用する java.sql.Connection のデータソースを指定します。以下のいずれかを使用できます。

  • jdbc/XXX 形式のデータソース名 (文字列)
  • jdbc:dbname:database 形式の JDBC URL (文字列)
  • <sql:setDataSource> でデータソースを設定した変数

個別にデータソースや JDBC URL を指定した場合のトランザクションスコープはこの更新処理の実行だけに限定されます (自動コミットと似た動きになります)。また JDBC URL が指定された場合はコネクションプールは使用されません。

省略された場合は現在の <sql:transaction> のデータソースが使用されます。

内 容

sql 属性を省略した場合の SQL。通常の JSP と同じ書式で記述できます。
更新処理の SQL にパラメータを埋め込みます。
更新処理の SQL に日付型のパラメータを埋め込みます。

使用例

テーブル FOO の中で ID が 1 のレコードに alpha を設定します。
JSP
<sql:transaction dataSource="jdbc/MYDS">
<sql:update>
    UPDATE FOO SET BAR='alpha' WHERE ID=?
    <sql:param>1</sql:param>
</sql:update>
<sql:query var="rs">
    SELECT ID,BAR FROM FOO ORDER BY ID
</sql:query>
<c:forEach var="r" items="${rs.rows}">
    <c:out value="${r.id}" />. <c:out value="${r.bar}" /><br>
</c:forEach>
</sql:transaction>
上記の実行結果です。
実行結果
1. alpha
2. Beta
3. Gamma
4. Delta
5. Epsilon
CVS 2008/03/09