Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình

Cách sử dụng truy vấn SQL có tham số trong JSP?

Thẻ <sql:param> được sử dụng như một hành động lồng nhau cho thẻ <sql:query> và thẻ <sql:update> để cung cấp giá trị cho một placeholder giá trị. Nếu giá trị null được cung cấp, giá trị được đặt thành SQL NULL cho placeholder.

Các thuộc tính

Thẻ <sql:param> có các thuộc tính sau:

Thuộc tính Mô tả Bắt buộc Mặc định
value Giá trị tham số cần thiết lập Không Body

Ví dụ

Để bắt đầu với khái niệm cơ bản, hãy tạo bảng Employees trong cơ sở dữ liệu TEST và tạo một vài bản ghi như sau:

Bước 1

Mở Command Prompt và chuyển đến 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 bảng Employee trong cơ sở dữ liệu TEST 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

Chúng ta sẽ tạo một vài bản ghi trong bảng Employee 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ờ hãy viết một JSP sử dụng thẻ <sql:update> để thực thi câu lệnh SQL DELETE xóa một bản ghi với 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>Thẻ JSTL sql:param</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ử thẻ <sql:param> với câu lệnh SQL UPDATE và SELECT cũng theo cách tương tự như chúng ta đã dùng với câu lệnh DELETE.