7.jstl之SQL:param

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="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=UTF-8">
		<title>测试JSTL</title>
	</head>
	
	<body>
		<c:out value="测试JSTL"></c:out>
		
		<sql:setDataSource var="datasource" dataSource="jdbc/sqlserver2008"/>

		<sql:transaction dataSource="${datasource}">

	  <sql:update var="newTable">
	    create table mytable (
	      nameid int primary key,
	      name varchar(80)
	    )
	  </sql:update>

	  <sql:update var="updateCount">
	    INSERT INTO mytable VALUES (1,'Paul Oakenfold')
	    INSERT INTO mytable VALUES (?,'Timo Maas')
	    <sql:param value="2"/>
	    INSERT INTO mytable VALUES (?,?)
	    <sql:param value="3"/>
	    <sql:param value="Kevin"/>
	  </sql:update>


	  <sql:query var="deejay">
	    SELECT * FROM mytable
	  </sql:query>

	</sql:transaction>

	<table border="1">
	  <c:forEach var="row" items="${deejay.rows}">
	    <tr>
	      <td><c:out value="${row.NAMEID}"/></td>
	      <td><c:out value="${row.NAME}"/></td>
	    </tr>
	   </c:forEach>
	</table>

	<sql:update var="newTable" dataSource="${datasource}">
	  drop table mytable
	</sql:update>
	
	<%--
		在设置SQL语句中的参数时,像money这种字段类型,用<sql:param>时,value属性中需要使用EL表达式,
		否则数据库将value属性中的值当作字符串处理,但又无法将字符串自动转换为money类型的数据。如果使用了EL表达式,
		如程序代码中所示,用的是${10},则会将10当作数值型数据,从而可以成功地转换成money类型的数据。如果采用如下的语句:
		
		<sql:param value="10"/> 则会抛出如下所示的异常:

		javax.servlet.jsp.JspException: 
		update account set account_money=account_money+?  
		where account_id=?: 
		[Microsoft][SQLServer 2000 Driver for JDBC]
		[SQLServer]不允许从数据类型 nvarchar 到数据类型 money 的隐性转换
		(表 'testDatabase.dbo.account',列 'account_money')。请使用 CONVERT 函数来运行此查询。
	 --%>

	</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值