SQL标签
Posted happyeverydayhxy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL标签相关的知识,希望对你有一定的参考价值。
SQL标签库提供了与关系型数据库进行交互的标签。
引入语法:<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
数据库:test
用户名:root
密码:123
项目中加入驱动jar包:mysql-connector-java-5.1.26-bin.jar
表:create table Employees
(
id int not null,
age int not null,
first varchar (255),
last varchar (255),
birth date//dateParam标签后增加的一列
);
数据:insert into Employees values(100, 18, \'Zara\', \'Ali\');
insert into Employees values(101, 25, \'Mahnaz\', \'Fatma\');
insert into Employees values(102, 30, \'Zaid\', \'Khan\');
insert into Employees values(103, 28, \'Sumit\', \'Mittal\');
标签包括有:
标签 | 描述 |
---|---|
<sql:setDataSource> | 指定数据源 |
<sql:query> | 运行SQL查询语句 |
<sql:update> | 运行SQL更新语句 |
<sql:param> | 将SQL语句中的参数设为指定值 |
<sql:dateParam> | 将SQL语句中的日期参数设为指定的java.util.Date 对象值 |
<sql:transaction> | 在共享数据库连接中提供嵌套的数据库行为元素,将所有语句以一个事务的形式来运行 |
<sql:setDataSource> 指定数据源,用来配置数据源或者将数据源信息存储在某作用域的变量中,用来作为其他Jstl数据库操作的数据源。
属性:
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
driver | 要注册的JDBC驱动 | 否 | 无 |
url | 数据库连接的JDBC URL | 否 | 无 |
user | 数据库用户名 | 否 | 无 |
password | 数据库密码 | 否 | 无 |
dataSource | 事先准备好的数据库 | 否 | 无 |
var | 代表数据库的变量 | 否 | 默认设置 |
scope | var属性的作用域 | 否 | Page |
eg:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <sql:setDataSource var="snapshot"
driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/test" user="root" password="123" /> </body> </html>
<sql:query> 用来运行select语言,并将结果存储在作用域变量中。
属性:
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
sql | 需要执行的SQL命令(返回一个ResultSet对象) | 否 | Body |
dataSource | 所使用的数据库连接(覆盖默认值) | 否 | 默认数据库 |
maxRows | 存储在变量中的最大结果数 | 否 | 无穷大 |
startRow | 开始记录的结果的行数 | 否 | 0 |
var | 代表数据库的变量 | 否 | 默认设置 |
scope | var属性的作用域 | 否 | Page |
eg:
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <sql:setDataSource var="snapshot" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/test" user="root" password="123" /> <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>
//结果输出为:
<sql:update> 用来执行一个没有返回值的SQL语句,如insert,update,delete。
语法:
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
sql | 需要执行的SQL命令(不返回ResultSet对象) | 否 | Body |
dataSource | 所使用的数据库连接(覆盖默认值) | 否 | 默认数据库 |
var | 用来存储所影响行数的变量 | 否 | 无 |
scope | var属性的作用域 | 否 | Page |
eg:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <sql:setDataSource var="snapshot" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/test" user="root" password="123" /> <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> <sql:update dataSource="${snapshot}" var="count"> insert into Employees values(104,2,\'Nuha\',\'Ali\'); </sql:update> <sql:query dataSource="${snapshot}" var="result"> select * from Employees; </sql:query> <p>增加一条信息后:</p> <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>
//结果输出为:
<sql:param> 提供值占位符,与上面两个标签签到使用。
语法:
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
value | 需要设置的参数值 | 否 | Body |
eg:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <sql:setDataSource var="snapshot" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/test" user="root" password="123" /> <c:set var="id" value="104" /> <p>查询id=104的人员信息:</p> <sql:query dataSource="${snapshot}" var="result"> select * from Employees where id=?; <sql:param value="${id}" /> </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>
//结果输出为:
<sql:dateParam> 与<sql:param>用法一直只是提供的是日期和时间的占位符。
语法:
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
value | 需要设置的日期参数(java.util.Date) | 否 | Body |
type | DATE (只有日期),TIME(只有时间), TIMESTAMP (日期和时间) | 否 | TIMESTAMP |
eg:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <sql:setDataSource var="snapshot" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/test" user="root" password="123" /> <sql:query dataSource="${snapshot}" var="result"> select * from Employees ; </sql:query> <table border="1" width="100%">以上是关于SQL标签的主要内容,如果未能解决你的问题,请参考以下文章我正在尝试在 PL/SQL 中解析 XML。我无法从标签中检索属性值,我做错了啥?
在动态sql的使用where时,if标签判断中,如果实体类中的某一个属性是String类型,那么就可以这样来判断连接语句: