JSTL SQL Transaction<sql:transaction> Tag Example

The <sql:transaction> tag is used to group <sql:query> and <sql:update> into transactions. You can put as many <sql:query> and <sql:update> as statements inside <sql:transaction> to make them a single transaction.

It ensures that the database modifications performed by the nested actions are either committed or rolled back if an exception is thrown by any nested action.

JSTL Transaction Tag provides the capability to run SQL statement in a group. You can run multiple SQL statements at a time. It is called one single transaction. In this transaction either all statments run successfully or all fail if one statement does not run successfully.

Syntax
<sql:transaction dataSource=”<string>” isolation=”<string>”/>

JSTL Transaction Tag has following attribute.

1. dataSource Attribute: Specifies the datasource for the transaction.

2. isolation Attribute: Specifies the level of isolation for the transaction.

JSTL SQL Transaction Tag Example:-

<%@ page import="java.io.*,java.util.*,java.sql.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*"%>
<%@ page import="java.util.Date,java.text.*" %>

<%@ 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:transaction Tag</title>
</head>
<body>
 
<sql:setDataSource var="snapshot" driver="com.mysql.jdbc.Driver"
     url="jdbc:mysql://localhost/TEST"
     user="root"  password="cohondob"/>

<%
Date DoB = new Date("2013/10/23");
int studentId = 1111;
%>

<sql:transaction dataSource="${snapshot}">
   <sql:update var="count">
      UPDATE Students SET firstName = 'Sandhya' WHERE Id = 2222
   </sql:update>
   <sql:update var="count">
      UPDATE Students SET fistName = 'Sweetu' WHERE Id = 3333
   </sql:update>
   <sql:update var="count">
     INSERT INTO Students 
     VALUES (4444,'Neha', 'Verma', '2013/10/23');
   </sql:update>
</sql:transaction>

<sql:query dataSource="${snapshot}" var="result">
   SELECT * from Students;
</sql:query>
 
<table border="1" width="100%">
<tr>
<th>Emp ID</th>
<th>First Name</th>
<th>Last Name</th>
<th>DoB</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.dob}"/></td>
</tr>
</c:forEach>
</table>
 
</body>
</html>

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

Emp ID First Name Last Name DOB
1111 Dinesh Rajput 2013/10/23
2222 Anu Rajput 2013/10/23
2222 Sweetu Rajput 2013/10/23
2222 Sandhya Bansal 2013/10/23
<<Previous <<   || Index ||   >>Next >>

Previous
Next