Jsp-jstl-sql-update-tag

提供:Dev Guides
移動先:案内検索

JSTL-SQL <sql:update>タグ

*<sql:update>* タグは、データを返さないSQLステートメントを実行します。たとえば、 *SQL INSERT、UPDATE* 、または *DELETE* ステートメント。

属性

*<sql:update>* タグには次の属性があります-
Attribute Description Required Default
sql SQL command to execute (should not return a ResultSet) No Body
dataSource Database connection to use (overrides the default) No Default database
var Name of the variable to store the count of affected rows No None
scope Scope of the variable to store the count of affected rows No Page

基本的な概念から始めるために、次のようにTESTデータベースに単純なテーブル Employees テーブルを作成し、そのテーブルにいくつかのレコードを作成しましょう-

ステップ1

  • コマンドプロンプト*を開き、次のようにインストールディレクトリに変更します-
C:\>
C:\>cd Program Files\MySQL\bin
C:\Program Files\MySQL\bin>

ステップ2

次のようにデータベースにログインします-

C:\Program Files\MySQL\bin>mysql -u root -p
Enter password: ********
mysql>

ステップ3

次のように TEST データベースにテーブル Employee を作成します-

mysql> use TEST;
mysql> create table Employees
   (
      id int not null,
      age int not null,
      first varchar (255),
      last varchar (255)
   );
Query OK, 0 rows affected (0.08 sec)
mysql>

データレコードを作成する

次のように、 Employee テーブルにいくつかのレコードを作成します-

mysql> INSERT INTO Employees VALUES (100, 18, 'Zara', 'Ali');
Query OK, 1 row affected (0.05 sec)

mysql> INSERT INTO Employees VALUES (101, 25, 'Mahnaz', 'Fatma');
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO Employees VALUES (102, 30, 'Zaid', 'Khan');
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO Employees VALUES (103, 28, 'Sumit', 'Mittal');
Query OK, 1 row affected (0.00 sec)

mysql>

次のように <sql:update> タグを使用して SQL INSERT ステートメントを実行し、テーブルに1つのレコードを作成するJSPを作成しましょう。

<%@ page import = "java.io.*,java.util.*,java.sql.*"%>
<%@ page import = "javax.servlet.http.*,javax.servlet.*" %>
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c"%>
<%@ taglib uri = "http://java.sun.com/jsp/jstl/sql" prefix = "sql"%>

<html>
   <head>
      <title>JSTL sql:update Tag</title>
   </head>

   <body>
      <sql:setDataSource var = "snapshot" driver = "com.mysql.jdbc.Driver"
         url = "jdbc:mysql://localhost/TEST"
         user = "root"  password = "pass123"/>

      <sql:update dataSource = "${snapshot}" var = "count">
         INSERT INTO Employees VALUES (104, 2, 'Nuha', 'Ali');
      </sql:update>

      <sql:query dataSource = "${snapshot}" var = "result">
         SELECT * from Employees;
      </sql:query>

      <table border = "1" width = "100%">
         <tr>
            <th>Emp ID</th>
            <th>First Name</th>
            <th>Last Name</th>
            <th>Age</th>
         </tr>

         <c:forEach var = "row" items = "${result.rows}">
            <tr>
               <td> <c:out value = "${row.id}"/></td>
               <td> <c:out value = "${row.first}"/></td>
               <td> <c:out value = "${row.last}"/></td>
               <td> <c:out value = "${row.age}"/></td>
            </tr>
         </c:forEach>
      </table>

   </body>
</html>

上記のJSPにアクセスすると、次の結果が表示されます-

+-------------+----------------+-----------------+-----------------+
|    Emp ID   |    First Name  |     Last Name   |       Age       |
+-------------+----------------+-----------------+-----------------+
|     100     |    Zara        |     Ali         |       18        |
|     101     |    Mahnaz      |     Fatma       |       25        |
|     102     |    Zaid        |     Khan        |       30        |
|     103     |    Sumit       |     Mittal      |       28        |
|     104     |    Nula        |     Ali         |       2         |
+-------------+----------------+-----------------+-----------------+

同様に、同じテーブルで SQL UPDATE および DELETE ステートメントを試すことができます。