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

Etiqueta <sql:update>

Biblioteca de etiquetas estándar de JSP

La etiqueta <sql:update> se utiliza para ejecutar una declaración SQL sin valor de retorno, como las declaraciones SQL INSERT, UPDATE, DELETE.

Formato de sintaxis

<sql:update var="<string>" scope="<string>" sql="<string>" dataSource="<string>"/>

Atributo

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

AtributoDescripción¿Es necesario?Valor predeterminado
                sql                Comando SQL que se debe ejecutar (no devuelve un objeto ResultSet)                No                Cuerpo
                dataSource                Conexión de base de datos utilizada (sustituye el valor predeterminado)                No                Base de datos predeterminada
                var                Usado para almacenar el número de filas afectadas                No                Ninguno
                Ámbito                El ámbito de la propiedad var                No                Página

    Ejemplo de programa

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

    Paso1:

Abra CMD, cambie el directorio a la carpeta de instalación:

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

    Paso2:

Inicie sesión en la base de datos:

C:\Program Files\MySQL\bin>mysql -u root -p
Ingrese contraseña: ********
mysql>

    Paso3:

En la base de datos TEST se crea la tabla Employees:

mysql> use TEST;
mysql> create table Employees
    (
     id int not null,
     edad int not null,
     first varchar (255),
     last varchar (255)
    );
Consulta OK, 0 filas afectadas (0.08 seg)
mysql>

    创建数据记录:

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

mysql> INSERT INTO Employees VALUES (100, 18, 'Zara', 'Ali');
Consulta OK, 1 fila afectada (0.05 seg)
 
mysql> INSERT INTO Employees VALUES (101, 25, 'Mahnaz', 'Fatma');
Consulta OK, 1 fila afectada (0.00 seg)
 
mysql> INSERT INTO Employees VALUES (102, 30, 'Zaid', 'Khan');
Consulta OK, 1 fila afectada (0.00 seg)
 
mysql> INSERT INTO Employees VALUES (103, 28, 'Sumit', 'Mittal');
Consulta OK, 1 fila afectada (0.00 seg)
 
mysql>

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

<%@ 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:update etiqueta</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>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>

El resultado de la ejecución es el siguiente:

El uso de las sentencias SQL UPDATE y DELETE es similar al de INSERT.

Se puede usar una variable en sql:update si es necesario sql:param

<sql:update dataSource="${snapshot}" var="count">
  DELETE FROM Employees WHERE Id = ?
  <sql:param value="${empId}" />
</sql:update>

Biblioteca de etiquetas estándar de JSP