zoukankan      html  css  js  c++  java
  • 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页面中进行数据库的各种操作。
  • 相关阅读:
    Ajax 笔记
    Node.js笔记
    Linux 简介与安装
    安装 Git for Windows
    Git学习:版本控制、Git简介与安装
    Git学习:基本设置、基本操作与工作原理
    JAVA:一篇文章理清多态
    浅入浅出数据结构(25)——最小生成树问题
    浅入浅出数据结构(24)——最短路径问题
    浅入浅出数据结构(23)——图的概念、存储方式与拓扑排序
  • 原文地址:https://www.cnblogs.com/wujixing/p/5018762.html
Copyright © 2011-2022 走看看