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

Cách thực thi câu lệnh SQL SELECT trong JSP?

Thẻ <sql:query> thực thi câu lệnh SQL SELECT và lưu kết quả trong một biến scoped.

Các thuộc tính

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

Thuộc tính Mô tả Bắt buộc Mặc định
sql Lệnh SQL cần thực thi (nên trả về ResultSet) Không Body
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
maxRows Số lượng kết quả tối đa để lưu trong biến Không Không giới hạn
startRow Số dòng trong kết quả bắt đầu ghi nhận Không 0
var Tên biến đại diện cho cơ sở dữ liệu Không Đặt mặc định
scope Phạm vi của biến để hiển thị kết quả từ cơ sở dữ liệu Không Page

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 tạo một JSP sử dụng <sql:query> để thực thi câu lệnh SQL SELECT 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:query</title>
</head>
<body>
<sql:setDataSource var = "snapshot" driver = "com.mysql.jdbc.Driver"
         url = "jdbc:mysql://localhost/TEST"
         user = "root" password = "pass123"/>
         <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, sẽ hiển thị kết quả sau:

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