Тег <sql:update>

JSP 标准标签库Стандартная библиотека тегов JSP

Тег <sql:update> используется для выполнения SQL-инструкции, которая не возвращает значение, например SQL-инструкций INSERT, UPDATE и DELETE.

Формат синтаксиса

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

Атрибуты

Тег <sql:update> имеет следующие атрибуты:

Attribute Описание Обязательный Значение по умолчанию
sql Команда SQL для выполнения (не возвращает объект ResultSet) нет Body
dataSource Используемое подключение к базе данных (переопределяет значение по умолчанию) нет База данных по умолчанию
var Переменная, используемая для хранения количества затронутых строк нет Отсутствует
scope Область действия атрибута var нет Page


Пример программы

Сначала необходимо создать таблицу Employees в базе данных TEST, затем добавить несколько записей в таблицу. Конкретные шаги следующие:

Шаг 1:

Откройте C, перейдите в каталог установки

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:

Создайте таблицу Employees в базе данных TEST:

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: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 标签</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>

Результат следующий:

sql-update

Использование инструкций SQL UPDATE и DELETE аналогично инструкции INSERT.

В sql:update, если вам нужно использовать переменные, вы можете использоватьsql:param。

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

JSP 标准标签库Стандартная библиотека тегов JSP

Другие расширения