首页 > 编程笔记 > Java笔记

JSP JSTL <sql:update>标签:更新数据

<sql:update> 标签用于使用 update、delete 和 insert 等 SQL 语句更新数据库记录,并返回影响的记录行数。

语法:

<sql:update sql="sqlUpdate"
  [dataSource="dataSource"]
  [var="varName"][scope="{page|request|session|application}"]/>

含有查询语句的语法如下:

<sql:update sql="sqlUpdate"
            [dataSource="dataSource"]
            [var="varName"][scope="{page|request|session|application}"]>
  <sql:param>actions
    </sql:update>

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

<sql:update[dataSource="dataSource"][var="varName"][scope="{page|request|session|application}"]>
  update statement
  optional<sql:param>actions
</sql:update>


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

<sql:update>标签属性
属性 类型 描述 引用 EL
sql String 更新数据记录的SQL语句 可以
dataSource String,javax.sql.DataSource 使用的数据源对象 可以
var String 存储更新记录数量的变量 不可以
scope String 变量的存储范围 不可以

示例1

应用 <sql:setDataSource> 标签连接 MySQL 数据库 db_testJSTL,并应用 <sql:update> 标签向数据表 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"%>
      <sql:setDataSource driver="com.mysql.jdbc.Driver"
                         url="jdbc:mysql://localhost:3306/db_testjstl"user="root"
                         password="111"/>
      <sql:update sql="INSERT INTO tb_user(username,pwd)VALUES('无语','111')"/>
      <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:update> 标签修改数据表 tb_user 中用户名为“无语”的用户密码为 123,关键代码如下:
<%@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.mysql.jdbc.Driver"
                       url="jdbc:mysql://localhost:3306/db_testjstl"user="root"
                       password="111"/>
    <sql:update sql="UPDATE tb_user SET pwd='123'WHERE username='无语'"/>
    <sql:query var="rs" sql="SELECT*FROM tb_user order by id desc"></sql:query>
<%@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.mysql.jdbc.Driver"
                       url="jdbc:mysql://localhost:3306/db_testjstl"user="root"
                       password="111"/>
    <sql:update sql="UPDATE tb_user SET pwd='123'WHERE username='无语'"/>
    <sql:query var="rs" sql="SELECT*FROM tb_user order by id desc"></sql:query>

示例3

应用 <sql:setDataSource> 标签连接 MySQL 数据库 db_testJSTL,并应用 <sql:update> 标签删除数据表 tb_user 中用户名为“无语”的用户信息,关键代码如下:
<%@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.mysql.jdbc.Driver"
    url="jdbc:mysql://localhost:3306/db_testjstl"user="root"
    password="111"/>
    <sql:update sql="DELETE FROM tb_user WHERE username='无语'"/>

典型应用

本示例使用 <sql:update> 标签向数据库中的 tb_goods 表插入一条新记录,使用系统时间生成记录的商品编号,以当前操作系统作为商品名称。应用 <sql:update> 标签向数据库中插入一条数据,关键代码如下:
<%@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=""/>
      <%
         request.setAttribute("id",System.currentTimeMillis()%100);
         request.setAttribute("name",System.getProperty("os.name"));
         request.setAttribute("intro",System.getProperty("user.dir"));
         request.setAttribute("price",2000);
         request.setAttribute("nowPrice",1800);
       %>
        <sql:update
                    sql="insert tb_goods values(${id},'${name}','${intro}',${price},${nowPrice})"/>
        <sql:query var="result"
                   sql="select*from tb_goods where商品编号<=${id}order by商品编号desc"
                   maxRows="6"/>
        <table width="600" border="1" cellpadding="0" cellspacing="0"
               bordercolor="white" bordercolordark="white" bordercolorlight="black">
          <tr align="center" bgcolor="cyan">
            <td width="80">${result.columnNames[0]}</td>
            <td width="140">${result.columnNames[1]}</td>
            <td width="240">${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[0]}</td>
              <td>${row[1]}</td>
              <td>${row[2]}</td>
              <td>${row[3]}</td>
              <td>${row[4]}</td>
            </tr>
          </c:forEach>
        </table>
运行结果如下:

商品编号 商品名称 简介 单价 现价
62 Windows 10 D:\Tomcat 5.5\bin 2000.0000 1800.0000
24 衡水老白干 口感好、入口柔 25.0000 25.0000
23 长白山 特价型商品 98.0000 98.0000
20 豆角 口感好、易熟易烂 2.2000 1.9000
20 百里香鸡蛋 口感极佳 6.3000 5.2000
20 八珍猪手 香嫩可口 10.8000 10.8000

所有教程

优秀文章