Nó đảm bảo rằng các sửa đổi cơ sở dữ liệu được thực hiện bởi các hành động lồng nhau được cam kết hoặc được khôi phục nếu một ngoại lệ được ném ra bởi bất kỳ hành động lồng nhau nào.
Thuộc tính
Thuộc tính | Mô tả | Bắt buộc | Mặc định |
---|---|---|---|
dataSource | Kết nối cơ sở dữ liệu để sử dụng (ghi đè mặc định) | Không | Cơ sở dữ liệu mặc định |
cách ly | Cách ly giao dịch (READ_COMMITTED, READ_UNCOMMITTED, REPEATABLE_READ hoặc SERIALIZABLE) | Không | Cơ sở dữ liệu mặc định |
Ví dụ
Để bắt đầu với khái niệm cơ bản, hãy để chúng tôi tạo Học sinh trong cơ sở dữ liệu TEST và tạo một vài bản ghi trong bảng đó như sau -
Bước 1
Mở Command Prompt và thay đổi thư mục cài đặt như sau -
C:\> C:\>cd Program Files\MySQL\bin C:\Program Files\MySQL\bin>
Bước 2
Đăng nhập vào cơ sở dữ liệu như sau -
C:\Program Files\MySQL\bin>mysql -u root -p Enter password: ******** mysql>
Bước 3
Tạo Nhân viên trong TEST cơ sở dữ liệu như sau -
mysql> use TEST; mysql> create table Students ( id int not null, first varchar (255), last varchar (255), dob date ); Query OK, 0 rows affected (0.08 sec) mysql>
Tạo bản ghi dữ liệu
Bây giờ chúng tôi sẽ tạo một vài bản ghi trong Nhân viên bảng như sau -
mysql> INSERT INTO Students VALUES (100, 'Zara', 'Ali', '2002/05/16'); Query OK, 1 row affected (0.05 sec) mysql> INSERT INTO Students VALUES (101, 'Mahnaz', 'Fatma', '1978/11/28'); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO Students VALUES (102, 'Zaid', 'Khan', '1980/10/10'); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO Students VALUES (103, 'Sumit', 'Mittal', '1971/05/08'); Query OK, 1 row affected (0.00 sec) mysql>
Bây giờ chúng ta hãy viết một JSP sẽ sử dụng
<%@ page import = "java.io.*,java.util.*,java.sql.*"%> <%@ page import = "javax.servlet.http.*,javax.servlet.*"%> <%@ page import = "java.util.Date,java.text.*" %> <%@ taglib uri = "https://java.sun.com/jsp/jstl/core" prefix = "c"%> <%@ taglib uri = "https://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("2001/12/16"); int studentId = 100; %> <sql:transaction dataSource = "${snapshot}"> <sql:update var = "count"> UPDATE Students SET last = 'Ali' WHERE Id = 102 </sql:update> <sql:update var = "count"> UPDATE Students SET last = 'Shah' WHERE Id = 103 </sql:update> <sql:update var = "count"> INSERT INTO Students VALUES (104,'Nuha', 'Ali', '2010/05/26'); </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>
Truy cập JSP ở trên, kết quả sau sẽ được hiển thị -
+-------------+----------------+-----------------+-----------------+ | Emp ID | First Name | Last Name | DoB | +-------------+----------------+-----------------+-----------------+ | 100 | Zara | Ali | 2001-12-16 | | 101 | Mahnaz | Fatma | 1978-11-28 | | 102 | Zaid | Ali | 1980-10-10 | | 103 | Sumit | Mittal | 1971-05-08 | | 104 | Nuha | Ali | 2010-05-26 | +-------------+----------------+-----------------+-----------------+