Computer >> Máy Tính >  >> Lập trình >> Lập trình

Làm cách nào để sử dụng truy vấn SQL được tham số hóa trong JSP?

được sử dụng như một hành động lồng nhau cho và thẻ để cung cấp giá trị cho trình giữ chỗ giá trị. Nếu giá trị null được cung cấp, giá trị được đặt thành SQL NULL cho trình giữ chỗ.

Thuộc tính

thẻ có các thuộc tính sau -

Thuộc tính Mô tả Bắt buộc Mặc định
Giá trị Giá trị của tham số cần đặt Không Phần thân

Ví dụ

Để bắt đầu với khái niệm cơ bản, hãy để chúng tôi tạo Nhân viên 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 Employees (
      id int not null,
      age int not null,
      first varchar (255),
      last varchar (255)
   );
   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 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>

Bây giờ chúng ta hãy viết một JSP sẽ sử dụng để thực thi một SQL DELETE câu lệnh xóa một bản ghi có id =103 từ bảng như sau -

<%@ page import = "java.io.*,java.util.*,java.sql.*"%>
<%@ page import = "javax.servlet.http.*,javax.servlet.*" %>
<%@ 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:param Tag</title>
   </head>
   <body>
      <sql:setDataSource var = "snapshot" driver = "com.mysql.jdbc.Driver"
         url = "jdbc:mysql://localhost/TEST"
         user = "root" password = "pass123"/>
         <c:set var = "empId" value = "103"/>
      <sql:update dataSource = "${snapshot}" var = "count">
         DELETE FROM Employees WHERE Id = ?
         <sql:param value = "${empId}" />
      </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>

Truy cập JSP ở trên, kết quả sau sẽ được hiển thị -

+-------------+----------------+-----------------+-----------------+
| Emp ID      | First Name     | Last Name       | Age             |
+-------------+----------------+-----------------+-----------------+
| 100         | Zara           | Ali             | 18              |
| 101         | Mahnaz         | Fatma           | 25              |
| 102         | Zaid           | Khan            | 30              |
+-------------+----------------+-----------------+-----------------+

Bạn có thể thử có thẻ CẬP NHẬT SQL CHỌN cũng như các câu lệnh theo cách tương tự như chúng tôi đã sử dụng nó với DELETE tuyên bố.