<%@ 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>
7.jstl之SQL:param
最新推荐文章于 2024-08-06 20:32:09 发布