JSTL SQL <sql:update> Tag


The <sql:update> tag executes an SQL statement that does not return data, for example SQL INSERT, UPDATE, or DELETE statements.


The <sql:update> tag has following attributes:

AttributeDescription RequiredDefault
sqlSQL command to execute (should not return a ResultSet)NoBody
dataSourceDatabase connection to use (overrides the default)NoDefault database
varName of the variable to store the count of affected rowsNoNone
scopeScope of the variable to store the count of affected rowsNoPage


To start with basic concept, let us create a simple table Employees table in TEST database and create few records in that table as follows:

Step 1:

Open a Command Prompt and change to the installation directory as follows:

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

Step 2:

Login to database as follows

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

Step 3:

Create the table Employee in TEST database as follows:

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)

Create Data Records

Finally you create few records in Employee table as follows:

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)

Now let us write a JSP which will make use of <sql:update> to execute a SQL INSERT statement to create one record in the table as follows:

<%@ 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"%>

<title>JSTL sql:update Tag</title>
<sql:setDataSource var="snapshot" driver="com.mysql.jdbc.Driver"
     user="root"  password="pass123"/>

<sql:update dataSource="${snapshot}" var="count">
   INSERT INTO Employees VALUES (104, 2, 'Nuha', 'Ali');

<sql:query dataSource="${snapshot}" var="result">
   SELECT * from Employees;
<table border="1" width="100%">
<th>Emp ID</th>
<th>First Name</th>
<th>Last Name</th>
<c:forEach var="row" items="${result.rows}">
<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>


Now try to access above JSP, which should display the following result:

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

Similar way, you can try SQL UPDATE and DELETE statements on the same table.