JSTL - Etiqueta SQL <sql: update>

los <sql:update>etiqueta ejecuta una declaración SQL que no devuelve datos; por ejemplo,SQL INSERT, UPDATEo DELETE declaraciones.

Atributo

los <sql:update> La etiqueta tiene los siguientes atributos:

Atributo Descripción Necesario Defecto
sql Comando SQL para ejecutar (no debe devolver un ResultSet) No Cuerpo
fuente de datos Conexión de base de datos para usar (anula la predeterminada) No Base de datos predeterminada
var Nombre de la variable para almacenar el recuento de filas afectadas No Ninguna
alcance Alcance de la variable para almacenar el recuento de filas afectadas No Página

Ejemplo

Para comenzar con el concepto básico, creemos una tabla simple Employees tabla en la base de datos TEST y cree algunos registros en esa tabla de la siguiente manera:

Paso 1

Abre un Command Prompt y cambie al directorio de instalación de la siguiente manera:

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

Paso 2

Inicie sesión en la base de datos de la siguiente manera:

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

Paso 3

Crea la tabla Employee en el TEST base de datos de la siguiente manera:

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>

Crear registros de datos

Ahora crearemos algunos registros en el Employee tabla de la siguiente manera:

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>

Escribamos ahora una JSP que hará uso de la <sql:update> etiqueta para ejecutar una SQL INSERT declaración para crear un registro en la tabla de la siguiente manera:

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

Acceda a la JSP anterior, se mostrará el siguiente resultado:

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

De manera similar, puedes intentar SQL UPDATE y DELETE declaraciones en la misma mesa.