JSTL sql 标记提供 SQL 支持。sql 标签的 url 是http://java.sun.com/jsp/jstl/sql并且前缀是sql

SQL 标记库允许标记与 Microsoft SQL Server、mySQL 或 Oracle 等 RDBMS(关系数据库)交互。用于在 JSP 中包含 JSTL SQL 标记库的语法是:




<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>


JSTL SQL 标记列表

SQL 标记

说明

sql:setDataSource



它用于创建仅适用于原型设计的简单数据源。

sql:query

它用于执行在其 sql 属性或正文中定义的 SQL 查询。

sql:update

它用于执行在其 sql 属性或标签正文中定义的 SQL 更新。

sql:param

它用于将 SQL 语句中的参数设置为指定的值。

sql:dateParam

它用于将 SQL 语句中的参数设置为指定的 java.util.Date 值。

sql:transaction

它用于为嵌套数据库操作提供公共连接。

JSTL SQL <sql:setDataSource> 标签

<sql:setDataSource> 标签用于创建仅适用于原型设计的简单数据源。

它用于直接从 JSP 创建数据源变量,并存储在作用域变量中。它可以用作其他数据库操作的输入。

让我们看一个简单的例子来理解 xml <sql:setDataSource> 标签是:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>  
<html>  
<head>  
<title>sql:setDataSource Tag</title>  
</head>  
<body>  
   
<sql:setDataSource var="db" driver="com.mysql.cj.jdbc.Driver"  
     url="jdbc:mysql://localhost/test?autoReconnect=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai"  
     user="root"  password="root"/>  
</body>  
</html>

上面的代码用作其他数据库操作的输入。它用于设置与数据库服务器的连接。因此,您将开始在后续 SQL 标记中使用 <sql:setDataSource>。

JSTL SQL <sql:query> 标签

<sql:query> 标签用于执行在其 sql 属性或正文中定义的 SQL 查询。它用于执行 SQL SELECT 语句并将结果保存在作用域变量中。

例子:


<sql:query dataSource="${db}" var="rs">  
SELECT * from Students;  
</sql:query>


JSTL SQL <sql:query> 完整示例

让我们看一个简单的JSP例子来理解<sql:query>标签的使用是:


<%@ page import="java.io.*,java.util.*,java.sql.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>

<html>
<head>
<title>sql:query Tag</title>
</head>
<body>

	<sql:setDataSource var="db" driver="com.mysql.cj.jdbc.Driver"
		url="jdbc:mysql://localhost/test?autoReconnect=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai"
		user="root" password="root" />

	<sql:query dataSource="${db}" var="rs">  
SELECT * from Students;  
</sql:query>

	<table border="2" width="100%">
		<tr>
			<th>Student ID</th>
			<th>First Name</th>
			<th>Last Name</th>
			<th>Age</th>
		</tr>
		<c:forEach var="table" items="${rs.rows}">
			<tr>
				<td><c:out value="${table.id}" /></td>
				<td><c:out value="${table.First_Name}" /></td>
				<td><c:out value="${table.Last_Name}" /></td>
				<td><c:out value="${table.Age}" /></td>
			</tr>
		</c:forEach>
	</table>

</body>
</html>


这将产生以下结果:

mysql 中一般 推荐标签怎么存储_java

JSTL SQL <sql:update> 标签

<sql:update> 标签用于执行在其 sql 属性或标签正文中定义的 SQL DML 查询。它可能是 SQL UPDATE、INSERT 或 DELETE 语句。

例子:


<sql:update dataSource="${db}" var="count">  
INSERT INTO Students VALUES (154,'Nasreen', 'jaha', 25);  
</sql:update>


JSTL SQL <sql:update> 完整示例

让我们看一个简单的JSP例子来了解<sql:update>标签的使用是:


<%@ page import="java.io.*,java.util.*,java.sql.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>

<html>
<head>
<title>sql:query Tag</title>
</head>
<body>

	<sql:setDataSource var="db" driver="com.mysql.cj.jdbc.Driver"
		url="jdbc:mysql://localhost/test?autoReconnect=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai"
		user="root" password="root" />
	<sql:update dataSource="${db}" var="count">  
INSERT INTO Students VALUES (154,'Nasreen', 'jaha', 25);  
</sql:update>

	<sql:query dataSource="${db}" var="rs">  
SELECT * from Students;  
</sql:query>

	<table border="2" width="100%">
		<tr>
			<th>Student ID</th>
			<th>First Name</th>
			<th>Last Name</th>
			<th>Age</th>
		</tr>
		<c:forEach var="table" items="${rs.rows}">
			<tr>
				<td><c:out value="${table.id}" /></td>
				<td><c:out value="${table.First_Name}" /></td>
				<td><c:out value="${table.Last_Name}" /></td>
				<td><c:out value="${table.Age}" /></td>
			</tr>
		</c:forEach>
	</table>

</body>
</html>

这将产生以下结果:

mysql 中一般 推荐标签怎么存储_sql_02

JSTL SQL <sql:param> 标签

<sql:param> 标签设置 SQL 语句中的参数值。

它用作 <sql:update> 和 <sql:query> 的嵌套标记,以提供 SQL 查询参数中的值。如果提供了 null 值,则 value 属性的值设置为 SQL NULL。

例子:



<c:set var="StudentId" value="152"/>  
<sql:update dataSource="${db}" var="count">  
DELETE FROM Students WHERE Id = ?  
<sql:param value="${StudentId}" />  
</sql:update>



JSTL SQL <sql:param> 完整示例

让我们看一个简单的JSP例子来理解<sql:param>标签的使用是:



<%@ page import="java.io.*,java.util.*,java.sql.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>

<html>
<head>
<title>sql:query Tag</title>
</head>
<body>

	<sql:setDataSource var="db" driver="com.mysql.cj.jdbc.Driver"
		url="jdbc:mysql://localhost/test?autoReconnect=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai"
		user="root" password="root" />
	<%  
java.util.Date DoB = new java.util.Date("2000/10/16");  
int studentId = 151;  
%>

	<sql:update dataSource="${db}" var="count">  
   UPDATE Student SET dob = ? WHERE Id = ?  
   <sql:dateParam value="<%=DoB%>" type="DATE" />
		<sql:param value="<%=studentId%>" />
	</sql:update>

	<sql:query dataSource="${db}" var="rs">  
SELECT * from Student;  
</sql:query>

	<table border="2" width="100%">
		<tr>
			<th>Student ID</th>
			<th>First Name</th>
			<th>Last Name</th>
			<th>Age</th>
		</tr>
		<c:forEach var="table" items="${rs.rows}">
			<tr>
				<td><c:out value="${table.id}" /></td>
				<td><c:out value="${table.First_Name}" /></td>
				<td><c:out value="${table.Last_Name}" /></td>
				<td><c:out value="${table.dob}" /></td>
			</tr>
		</c:forEach>
	</table>

</body>
</html>

这将产生以下结果:

mysql 中一般 推荐标签怎么存储_数据库_03

JSTL SQL <sql:dateParam> 标签

<sql:dateParam> 用于设置 SQL 查询参数的指定日期。

它用作 <sql:update> 和 <sql:query> 的嵌套标记,为 SQL 查询参数提供日期和时间值。如果提供空值,则该值设置为 SQL NULL。

例子:



<%  
Date DoB = new Date("2000/10/16");  
int studentId = 151;  
%>  
<sql:update dataSource="${db}" var="count">  
   UPDATE Student SET dob = ? WHERE Id = ?  
   <sql:dateParam value="<%=DoB%>" type="DATE" />  
   <sql:param value="<%=studentId%>" />  
</sql:update>



JSTL SQL <sql:dateParam> 完整示例

让我们看一个简单的 JSP 示例来了解 <sql:dateParam> 标签的使用:



<%@ page import="java.io.*,java.util.*,java.sql.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>

<html>
<head>
<title>sql:query Tag</title>
</head>
<body>

	<sql:setDataSource var="db" driver="com.mysql.cj.jdbc.Driver"
		url="jdbc:mysql://localhost/test?autoReconnect=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai"
		user="root" password="root" />
	<%  
java.util.Date DoB = new java.util.Date("2000/10/16");  
int studentId = 151;  
%>

	<sql:update dataSource="${db}" var="count">  
   UPDATE Student SET dob = ? WHERE Id = ?  
   <sql:dateParam value="<%=DoB%>" type="DATE" />
		<sql:param value="<%=studentId%>" />
	</sql:update>

	<sql:query dataSource="${db}" var="rs">  
SELECT * from Student;  
</sql:query>

	<table border="2" width="100%">
		<tr>
			<th>Student ID</th>
			<th>First Name</th>
			<th>Last Name</th>
			<th>Age</th>
		</tr>
		<c:forEach var="table" items="${rs.rows}">
			<tr>
				<td><c:out value="${table.id}" /></td>
				<td><c:out value="${table.First_Name}" /></td>
				<td><c:out value="${table.Last_Name}" /></td>
				<td><c:out value="${table.dob}" /></td>
			</tr>
		</c:forEach>
	</table>

</body>
</html>

输出:

mysql 中一般 推荐标签怎么存储_数据库_04

JSTL SQL <sql:transaction> 标签

<sql:transaction> 标签用于事务管理。它用于将多个 <sql:update> 分组为公共事务。如果将多个 SQL 查询分组到一个事务中,则数据库只会被命中一次。

它用于确保数据库修改由可以回滚或提交的嵌套操作执行。

例子:



<%  
Date DoB = new Date("2000/10/16");  
int studentId = 151;  
%>  
<sql:transaction dataSource="${db}">  
   <sql:update var="count">  
      UPDATE Student SET First_Name = 'Suraj' WHERE Id = 150  
   </sql:update>  
   <sql:update var="count">  
      UPDATE Student SET Last_Name= 'Saifi' WHERE Id = 153  
   </sql:update>  
   <sql:update var="count">  
     INSERT INTO Student   
     VALUES (154,'Supriya', 'Jaiswal', '1995/10/6');  
   </sql:update>  
</sql:transaction>



JSTL SQL <sql:transaction> 完整示例



 

让我们看一个简单的 JSP 示例来了解 <sql:transaction> 标签的使用:



<%@ page import="java.io.*,java.util.*,java.sql.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>

<html>
<head>
<title>sql:query Tag</title>
</head>
<body>

	<sql:setDataSource var="db" driver="com.mysql.cj.jdbc.Driver"
		url="jdbc:mysql://localhost/test?autoReconnect=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai"
		user="root" password="root" />
	<%
		java.util.Date DoB = new java.util.Date("2000/10/16");
	int studentId = 151;
	%>

	<sql:transaction dataSource="${db}">
		<sql:update var="count">  
      UPDATE Student SET First_Name = 'Suraj' WHERE Id = 150  
   </sql:update>
		<sql:update var="count">  
      UPDATE Student SET Last_Name= 'Saifi' WHERE Id = 153  
   </sql:update>
		<sql:update var="count">  
     INSERT INTO Student   
     VALUES (154,'Supriya', 'Jaiswal', '1995/10/6');  
   </sql:update>
	</sql:transaction>

	<sql:query dataSource="${db}" var="rs">  
SELECT * from Student;  
</sql:query>

	<table border="2" width="100%">
		<tr>
			<th>Student ID</th>
			<th>First Name</th>
			<th>Last Name</th>
			<th>Age</th>
		</tr>
		<c:forEach var="table" items="${rs.rows}">
			<tr>
				<td><c:out value="${table.id}" /></td>
				<td><c:out value="${table.First_Name}" /></td>
				<td><c:out value="${table.Last_Name}" /></td>
				<td><c:out value="${table.dob}" /></td>
			</tr>
		</c:forEach>
	</table>

</body>
</html>

输出:

mysql 中一般 推荐标签怎么存储_java_05