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

Etiqueta <sql:query

Biblioteca de etiquetas estándar de JSP

La etiqueta <sql:query> se utiliza para ejecutar sentencias SQL SELECT y también para almacenar los resultados en variables de ámbito.

Formato de sintaxis

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

Atributo

Las etiquetas <sql:query> tienen los siguientes atributos:

AtributoDescripción¿Es necesario?Valor predeterminado
sql Comando SQL que debe ejecutarse (devuelve un objeto ResultSet) No Cuerpo
dataSource Conexión de base de datos utilizada (sobreponiendo el valor predeterminado) No Base de datos predeterminada
maxRows Número máximo de resultados almacenados en la variable No Infinidad
startRow Número de filas del resultado de inicio del registro No 0
var Representa la variable de la base de datos No Configuración predeterminada
Ámbito El ámbito de la propiedad var No Página

Ejemplo de programa

Primero, necesita crear una tabla Employees en la base de datos TEST, luego agregar algunas filas a la tabla, los pasos específicos son los siguientes:

步骤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 Empleado</th>
<th>Nombre</th>
<th>Apellido</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>

Los resultados de ejecución son los siguientes:

Biblioteca de etiquetas estándar de JSP