JSP標准標簽庫(JSTL)--SQL標簽庫 sql


了解即可。SQL標簽庫

No.

功能分類

標簽名稱

描述

1

數據源標簽

<sql:setDataSource>

設置要使用的數據源名稱

2

數據庫操作標簽

<sql:query>

執行查詢操作

3

<sql:update>

執行更新操作

4

事務處理標簽

<sql:transaction>

執行事務的處理操作,並設置操作的安全級別

 

  • 設定數據源:<sql:setDataSource> 
<sql:setDataSource dataSource="數據源名稱" [var="保存的屬性名稱"]  [scope="[page | request | session | application]"]/>
<sql:setDataSource driver="數據庫驅動程序" url="數據庫連接地址"  user="用戶名" password="密碼" [var="保存的屬性名稱"]  [scope="[page | request | session | application]"]/>
<sql:setDataSource>標簽的屬性:

No.

屬性名稱

EL支持

描述

1

dataSource

數據源名稱

2

driver

JDBC數據庫驅動程序

3

url

數據庫連接的URL地址

4

user

數據庫的用戶名

5

password

數據庫的密碼

6

var

×

儲存數據庫連接的屬性名稱

7

scope

×

var屬性的保存范圍,默認為page

 

 
<%@ taglib uri="http://www.mldn.cn/jstl/sql" prefix="sql"%>
<sql:setDataSource dataSource="jdbc/mldn" var="mldnds"/>

 

數據庫操作標簽 :<sql:query>、<sql:update>、<sql:transaction>

  • 查詢操作:<sql:query> 
<sql:query sql="SQL語句" var="保存查詢結果的屬性名稱"  [scope="[page | request | session | application]"]  [dataSource="數據源的名稱"] maxRows="最多顯示的記錄數" startRow="記錄的開始行數"/>
<sql:query var="保存查詢結果的屬性名稱"  [scope="[page | request | session | application]"]  [dataSource="數據源的名稱"] maxRows="最多顯示的記錄數" startRow="記錄的開始行數">

  SQL查詢語句

  </sql:query>

<sql:query>標簽的屬性 :

No.

屬性名稱

EL支持

描述

1

sql

編寫要執行的查詢語句

2

dataSource

本查詢要使用的數據源名稱

3

maxRows

最多可以顯示的數據記錄數

4

startRow

數據的開始行數,默認在第0行

5

var

×

保存查詢結果

6

scope

×

var變量的保存范圍,默認是page范圍

 

    <sql:setDataSource dataSource="java:comp/env/jdbc/mldn" var="mldnds"/>
    <sql:query var="result">
        SELECT empno,ename,job,hiredate,sal FROM emp ;
    </sql:query>

 

查詢結果的五個屬性 :

No.

屬性名稱

描述

1

rows

根據字段名稱取出列的內容

2

rowsByIndex

根據字段索引取出列的內容

3

columnNames

取得字段的名稱

4

rowCount

取得全部的記錄數

5

limitedByMaxRows

取出最大的數據長度

 

<%@ page contentType="text/html" pageEncoding="GBK"%>
<%@ taglib prefix="c" uri="http://www.mldn.cn/jst/core"%>
<%@ taglib prefix="sql" uri="http://www.mldn.cn/jst/sql"%>
<html>
<head><title>www.mldnjava.cn,MLDN高端Java培訓</title></head>
<body>
<sql:setDataSource dataSource="jdbc/mldn" var="mldnds"/>
<sql:query var="result" dataSource="${mldnds}" maxRows="2" startRow="2">
    SELECT empno,ename,job,hiredate,sal FROM emp ;
</sql:query>
<h3>一共有${result.rowCount}條記錄!</h3>
<table border="1" width="100%">
    <tr>
        <td>雇員編號</td>
        <td>雇員姓名</td>
        <td>雇員工作</td>
        <td>雇員工資</td>
        <td>雇佣日期</td>
    </tr>
    <c:forEach items="${result.rows}" var="row">
        <tr>
            <td>${row.empno}</td>
            <td>${row.ename}</td>
            <td>${row.job}</td>
            <td>${row.sal}</td>
            <td>${row.hiredate}</td>
        </tr>
    </c:forEach>
</table>
</body>
</html>

分頁顯示:

    <sql:query var="result" dataSource="${mldnds}" maxRows="2" startRow="2">
        SELECT empno,ename,job,hiredate,sal FROM emp ;
    </sql:query>
  • 更新操作:<sql:update> 
<sql:update sql="SQL語句" var="保存更新的記錄數" [scope="[page | request | session | application]"]  [dataSource="數據源的名稱"]/>
<sql:update var="保存更新的記錄數" [scope="[page | request | session | application]"]  [dataSource="數據源的名稱"]>

  更新的SQL語句

  </sql:update>

<sql:update>標簽的屬性 :

No.

屬性名稱

EL支持

描述

1

sql

編寫要執行的更新語句

2

dataSource

本更新要使用的數據源名稱

3

var

×

保存更新的記錄數

4

scope

×

var變量的保存范圍,默認是page范圍

<%@ page contentType="text/html" pageEncoding="GBK"%>
<%@ taglib uri="http://www.mldn.cn/jstl/sql" prefix="sql"%>
<html>
<head><title>www.mldnjava.cn,MLDN高端Java培訓</title></head>
<body>
    <sql:setDataSource dataSource="jdbc/mldn" var="mldnds"/>
    <sql:update var="result" dataSource="${mldnds}">
        INSERT INTO emp (empno,ename,job,hiredate,sal) VALUES ('6878','周軍','經理','2003-03-14',9000) ;
    </sql:update>
</body>
</html>

設置參數:

在JDBC的操作中可以通過PreparedStatment完成預處理的操作,所有要設置的內容,都通過“?”進行占位,之后使用setXxx()方法設置每一個占位符的具體功能,在JSTL中也可以使用這種預處理的方式,只需要在<sql:query>或<sql:update>標簽里使用“?”,但是所有的內容要通過<sql:param>和<sql:dateParam>兩個標簽設置,這兩個標簽語法如下:
<sql:param value="參數內容"/>
<sql:dateParam type="date種類" value="參數內容"/>
<%@ page contentType="text/html" pageEncoding="GBK"%>
<%@ taglib uri="http://www.mldn.cn/jstl/sql" prefix="sql"%>
<html>
<head><title>www.mldnjava.cn,MLDN高端Java培訓</title></head>
<body>
    <%
        pageContext.setAttribute("empno",6878) ;
        pageContext.setAttribute("ename","李軍") ;
        pageContext.setAttribute("job","分析員") ;
        pageContext.setAttribute("date",new java.util.Date()) ;
    %>
    <sql:setDataSource dataSource="jdbc/mldn" var="mldnds"/>
    <sql:update var="result" dataSource="${mldnds}">
        UPDATE emp SET ename=?,job=?,hiredate=? WHERE empno=? ;
        <sql:param value="${ename}"/>
        <sql:param value="${job}"/>
        <sql:dateParam value="${date}" type="date"/>
        <sql:param value="${empno}"/>
    </sql:update>
</body>
</html>

 

  • 事務處理 :<sql:transaction>
<sql:transaction [dataSource="數據源名稱"]   [isolation="[read_committed | read_uncommitted | repeatable | serializable]"]>

  <sql:update>或者<sql:query>

  </sql:transaction>

事務的安全級別防范 :

No.

安全級別

臟讀

不可重復讀

幻象讀

1

read_committed

     

2

read_uncommitted

   

3

repeatable

 

4

serializable

 

<%@ page contentType="text/html" pageEncoding="GBK"%>
<%@ taglib uri="http://www.mldn.cn/jstl/sql" prefix="sql"%>
<html>
<head><title>www.mldnjava.cn,MLDN高端Java培訓</title></head>
<body>
    <sql:setDataSource dataSource="jdbc/mldn" var="mldnds"/>
    <sql:transaction isolation="serializable" dataSource="${mldnds}">
        <sql:update var="result">
            INSERT INTO emp (empno,ename,job,hiredate,sal) VALUES ('6879','李彥','經理','2003-03-14',3000) ;
        </sql:update>
    </sql:transaction>
</body>
</html>

總結:

1. JSTL雖然提供了SQL的支持標簽,但是從MVC上來講,此種操作並不常用;
2. 通過SQL標簽庫可以直接在JSP頁面中進行數據庫的各種操作。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM