加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

JSP JSTL <sql:query>标签:通过SQL语句查询

发布时间:2020-12-15 02:40:58 所属栏目:Java 来源:网络整理
导读:sql:query 标签用于通过 SQL 语句查询符合条件的数据。 语法: 无查询条件的语法格式如下: sql:query sql="sqlQuery" ?????????? var="varName"[scope="{page|request|session|application}"] ?????????? [dataSource="dataSource"] ?????????? [maxRows="ma
<sql:query> 标签用于通过 SQL 语句查询符合条件的数据。

语法:

无查询条件的语法格式如下:

<sql:query sql="sqlQuery"
?????????? var="varName"[scope="{page|request|session|application}"]
?????????? [dataSource="dataSource"]
?????????? [maxRows="maxRows"]
?????????? [startRow="startRow"]>
? <sql:param>actions
</sql:query>

含有查询条件的语法格式如下:

<sql:query var="varName"
?????????? [scope="{page|request|session|application}"]
?????????? [dataSource="dataSource"]
?????????? [maxRows="maxRows"]
?????????? [startRow="startRow"]>
? query
? optional<sql:param>actions
</sql:query>


<sql:query> 标签各属性的详细介绍如表所示。

<sql:query> 标签属性
属性 类型 描述 引用 EL
sql String 查询数据的SQL语句 可以
dataSource String,javax.sql.DataSource 使用的数据源对象 可以
maxRows String 指定查询记录的最大行数 可以
startRows String 指定查询记录的开始行数 可以
var String 存储查询结果的变量,该变量包含5个操作结果集的属性,相应的属性说明如下表所示 不可以
scope String 变量的存储范围 不可以


说明:dataSource 属性是可选项,如果没有设置该属性,会在 page 范围内寻找数据源对象,如果找不到,则会抛出 JspException 异常。

结果集变量的属性
属性 类型 描述
rowCount int 结果集中的记录总数
columnNames String[] 字段名数组
rows java.util.Map 以字段名索引结果集
rowsByIndex Object[] 以数字下标索引结果集
limitedByMaxRows boolean 是否设置了maxRows属性来限制查询记录的数量

示例1:

应用 <sql:setDataSource> 标签连接 SQL Server 2000 数据库 db_testJSTL,并应用 <sql:query> 标签输出数据表 tb_user 中的从第 3 条记录开始的5条记录,关键代码如下:
<%@page language="java" contentType="text/html;charset=GBK" pageEncoding="GBK"%>
  <%@taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%>
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
      <sql:setDataSource driver="com.microsoft.jdbc.sqlserver.SQLServerDriver"
                         url="jdbc:microsoft:sqlserver://localhost:1433;databaseName=db_testJSTL"
                         user="sa" password=""/>
      <sql:query var="rs" sql="SELECT*FROM tb_user" maxRows="5" startRow="2"/>
      <table width="300" border="1" cellspacing="0" cellpadding="0" bordercolor="#FFFFFF"
             bordercolordark="#999999" bordercolorlight="#FFFFFF">
        <tr>
          <td align="center">&nbsp;${rs.columnNames[0]}</td>
          <td align="center">&nbsp;${rs.columnNames[1]}</td>
          <td align="center">&nbsp;${rs.columnNames[2]}</td>
        </tr>
        <c:forEach items="${rs.rowsByIndex}"var="row">
          <tr>
            <td>&nbsp;${row[0]}</td>
            <td>&nbsp;${row[1]}</td>
            <td>&nbsp;${row[2]}</td>
          </tr>
        </c:forEach>
      </table>

示例2

应用 <sql:setDataSource> 标签连接 MySQL 数据库 db_testJSTL,并应用 <sql:query> 标签输出数据表 tb_user 中的全部记录,关键代码如下:
<%@page language="java" contentType="text/html;charset=GBK" pageEncoding="GBK"%>
  <%@taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%>
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
      连接 MySQL 数据库
      <sql:setDataSource driver="com.mysql.jdbc.Driver"
                         url="jdbc:mysql://localhost:3306/db_testjstl"user="root"
                         password="111"/>
      <sql:query var="rs" sql="SELECT*FROM tb_user"/>
      <table width="300" border="1" cellspacing="0" cellpadding="0" bordercolor="#FFFFFF"
             bordercolordark="#999999"bordercolorlight="#FFFFFF">
        <tr>
          <td align="center">&nbsp;${rs.columnNames[0]}</td>
          <td align="center">&nbsp;${rs.columnNames[1]}</td>
          <td align="center">&nbsp;${rs.columnNames[2]}</td>
        </tr>
        <c:forEach items="${rs.rowsByIndex}" var="row">
          <tr>
            <td>&nbsp;${row[0]}</td>
            <td>&nbsp;${row[1]}</td>
            <td>&nbsp;${row[2]}</td>
          </tr>
        </c:forEach>
      </table>

示例3

在 <sql:query> 标签中指定数据源为 <sql:setDataSource> 标签创建的数据源 conn,关键代码如下:
<%@page language="java" contentType="text/html;charset=GBK" pageEncoding="GBK"%>
  <%@taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%>
  <sql:setDataSource driver="com.microsoft.jdbc.sqlserver.SQLServerDriver"
    url="jdbc:microsoft:sqlserver://localhost:1433;databaseName=db_testJSTL"
    user="sa" password="" var="conn"/>
  <sql:transaction dataSource="${conn}">
  <sql:query var="rs" sql="SELECT*FROM tb_user"/>

典型应用

应用 <sql:query> 标签从数据库中 tb_goods 表的第 4 行记录开始无条件地查询6条记录。使用 <sql:query> 标签查询数据,关键代码如下:
<%@page pageEncoding="gbk" contentType="text/html;charset=GBK"%>
  <%@taglib prefix="sql" uri="/WEB-INF/sql.tld"%>
    <%@taglib prefix="c" uri="/WEB-INF/c.tld"%>
      <sql:setDataSource driver="com.microsoft.jdbc.sqlserver.SQLServerDriver"
                         url="jdbc:microsoft:sqlserver://localhost:1433;databaseName=db_JSDQ26"
                         user="sa"password=""/>
      <sql:query var="result" sql="select*from tb_goods" maxRows="6" startRow="4"/>
      <table width="400" border="1" cellpadding="0" cellspacing="0"
             bordercolor="white" bordercolordark="white" bordercolorlight="black">
        <tr align="center" bgcolor="cyan">
          <td width="80">${result.columnNames[1]}</td>
          <td width="300">${result.columnNames[2]}</td>
          <td width="50">${result.columnNames[3]}</td>
          <td width="50">${result.columnNames[4]}</td>
        </tr>
        <c:forEach items="${result.rowsByIndex}" var="row">
          <tr>
            <td>${row[1]}</td>
            <td>${row[2]}</td>
            <td>${row[3]}</td>
            <td>${row[4]}</td>
          </tr>
        </c:forEach>
      </table>
运行结果如下:

商品名称 简介 单价 现价
康佳电视 高效节能型、使用寿命长 2980.0000 2980.0000
奥马冰箱 实用又实惠、使用寿命长 1980.0000 1980.0000
三星彩电 等离子电视、对人体无辐射作用 2950.0000 2950.0000
创维彩电 实用型、节能型 1999.0000 1890.0000
TCL电视 外型美观、使用寿命长 3290.0000 3290.0000
索尼数码相机 质量好、使用寿命长 2005.0000 2005.0000

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读