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。我无法从标签中检索属性值,我做错了啥?

mybatis动态SQL语句

电视盒的airplayserver可以删除吗

Mybatis框架学习笔记 --- [动态sql的使用]

在动态sql的使用where时,if标签判断中,如果实体类中的某一个属性是String类型,那么就可以这样来判断连接语句:

12.javaweb SQL标签库