JSP JSTL <sql:query>标签:通过SQL语句查询
<sql:query> 标签用于通过 SQL 语句查询符合条件的数据。
<sql:query> 标签各属性的详细介绍如表所示。
说明:dataSource 属性是可选项,如果没有设置该属性,会在 page 范围内寻找数据源对象,如果找不到,则会抛出 JspException 异常。
语法:
无查询条件的语法格式如下:
<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> 标签各属性的详细介绍如表所示。
| 属性 | 类型 | 描述 | 引用 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 |
所有教程
- socket
- Python基础教程
- C#教程
- MySQL函数
- MySQL
- C语言入门
- C语言专题
- C语言编译器
- C语言编程实例
- GCC编译器
- 数据结构
- C语言项目案例
- C++教程
- OpenCV
- Qt教程
- Unity 3D教程
- UE4
- STL
- Redis
- Android教程
- JavaScript
- PHP
- Mybatis
- Spring Cloud
- Maven
- vi命令
- Spring Boot
- Spring MVC
- Hibernate
- Linux
- Linux命令
- Shell脚本
- Java教程
- 设计模式
- Spring
- Servlet
- Struts2
- Java Swing
- JSP教程
- CSS教程
- TensorFlow
- 区块链
- Go语言教程
- Docker
- 编程笔记
- 资源下载
- 关于我们
- 汇编语言
- 大数据
- 云计算
- VIP视频