Jsp-jstl-sql-query-tag

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

JSTL-SQL <sql:query>タグ

*<sql:query>* タグは、SQL SELECTステートメントを実行し、結果をスコープ変数に保存します。

属性

*<sql:query>* タグには次の属性があります-
Attribute Description Required Default
sql SQL command to execute (should return a ResultSet) No Body
dataSource Database connection to use (overrides the default) No Default database
maxRows Maximum number of results to store in the variable No Unlimited
startRow Number of the row in the result at which to start recording No 0
var Name of the variable to represent the database No Set default
scope Scope of variable to expose the result from the database No Page

基本的な概念から開始するには、TESTデータベースに Employees テーブルを作成し、次のようにそのテーブルにいくつかのレコードを作成します。

次の手順に従って、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:query> *を使用してSQL SELECTステートメントを実行する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:query Tag</title>
   </head>

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

         <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        |
+-------------+----------------+-----------------+-----------------+