JSTL - Balise SQL <sql: query>

le <sql:query> La balise exécute une instruction SQL SELECT et enregistre le résultat dans une variable de portée.

Attribut

le <sql:query> tag a les attributs suivants -

Attribut La description Obligatoire Défaut
sql Commande SQL à exécuter (doit renvoyer un ResultSet) Non Corps
la source de données Connexion à la base de données à utiliser (remplace la valeur par défaut) Non Base de données par défaut
maxRows Nombre maximum de résultats à stocker dans la variable Non Illimité
startRow Numéro de la ligne du résultat à partir de laquelle commencer l'enregistrement Non 0
var Nom de la variable pour représenter la base de données Non Définir par defaut
portée Portée de la variable pour exposer le résultat de la base de données Non Page

Exemple

Pour commencer avec le concept de base, créons un Employees table dans la base de données TEST et créez quelques enregistrements dans cette table comme suit -

Suivez ces étapes pour créer la table Employés -

Étape 1

Ouvrir un Command Prompt et passez au répertoire d'installation comme suit -

C:\>
C:\>cd Program Files\MySQL\bin
C:\Program Files\MySQL\bin>

Étape 2

Connectez-vous à la base de données comme suit

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

Étape 3

Créer le Employee table dans le TEST base de données comme suit - -

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>

Créer des enregistrements de données

Nous allons maintenant créer quelques enregistrements dans la table Employee comme suit -

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>

Créons maintenant un JSP qui utilisera of <sql:query> pour exécuter une instruction SQL SELECT comme suit -

<%@ 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>

Accédez à la JSP ci-dessus, qui devrait afficher le résultat suivant -

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