English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Le tag <sql:query>

Bibliothèque de balises standard JSP

Le tag <sql:query> est utilisé pour exécuter des requêtes SQL SELECT et également pour stocker les résultats dans les variables de portée.

Format syntaxique

<sql:query
  var="<string>"
  scope="<string>"
  sql="<string>"
  dataSource="<string>"
  startRow="<string>"
  maxRows="<string>"/>

Attribut

Les attributs du tag <sql:query> sont les suivants :

AttributDescriptionNécessaire ou nonValeur par défaut
sql La commande SQL à exécuter (retourne un objet ResultSet) Non Body
dataSource La connexion à la base de données utilisée (remplace la valeur par défaut) Non Base de données par défaut
maxRows Nombre maximum de résultats stockés dans la variable Non Infini
startRow Nombre de lignes du résultat du début de l'enregistrement Non 0
var Représente la variable de base de données Non Paramètres par défaut
scope L'effet de la portée de l'attribut var Non Page

Exemple de programme

Tout d'abord, il faut créer une table Employees dans la base de données TEST, puis ajouter quelques enregistrements à la table, les étapes d'opération spécifiques sont les suivantes :

步骤1:

打开CMD,将目录转至安装目录下:

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数据库中建立Employees表:

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>

创建数据记录:

最后,在Employees表中创建几条记录:

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>

现在,编写JSP文件,使用<sql:query>标签来执行SQL SELECT语句:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" %>
<%@ 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>ID Emp</th>
<th>Nom de naissance</th>
<th>Nom de famille</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>

Résultat de l'exécution suivant :

Bibliothèque de balises standard JSP