Environment:Eclipse 4.2,Tomcat 7,PostgreSQL9.2
今天使用sql:setDataSource碰到的问题,在这里总结一下:
1.错误描述:invalid driver class name: "java.lang.ClassNotFoundException: org.postgresql.Driver"
解决方法:将postgreSQL的驱动放到网站WEB-INF文件夹下的lib中.
2.错误描述: Unable to get connection, DataSource invalid: "java.sql.SQLException: No suitable driver found for jdbc:..."
解决方法:先检查驱动的url路径是否正确,在正确的情况下,将postgreSQL的驱动放到tomcat根目录的lib文件夹中就行了.这个问题应该是驱动放在项目中才导致的问题.当然mysql和oracle类似的问题,应该也能这样解决.
其实只要将postgreSQL的驱动放到tomcat的lib中,就能解决上述的两个问题.
3.错误描述:按照参考书<Java Web整合开发王者归来>(P248),使用${ dataSource.class.name } 引发错误.
解决方法:引发问题原因有2:a.dataSource.class.name本身会引发错误;b.没有设置sql:setDataSource的scope.设置scope后,使用${ dataSource }而不是${ dataSource.class.name }.
Date:2012-10-25
今天使用sql:param碰到的问题,在这里总结一下:
1.错误描述:按照参考书<Java Web整合开发王者归来>(P254),使用<sql:param>碰到问题.
原因:错误sql语句:select * from tb_person where birthday > (?-1),使用java.util.Date获取的时间是CST时间,在数据库支持的sql不能直接相减,需先转换时间格式,再使用数据库支持的时间函数进行操作.
解决方法:见下面关键代码:
<jsp:useBean id="date" class="java.util.Date"></jsp:useBean>//获取系统时间;设置一个Date类型的bean,放入request中 <jsp:useBean id="dt" class="java.lang.String"></jsp:useBean>//保存格式化后的时间 <!--格式转换--> <% SimpleDateFormat myFmt=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); dt=myFmt.format(date); %> <!--查询--> <sql:query var="rs" dataSource="${ dataSource }"> select * from tb_person where birthday > (to_timestamp(?,'YYYY-MM-DD HH24:MI:SS') - interval '1 day') <sql:param value="${ dt }"></sql:param> </sql:query>//to_timestamp是pgsql的函数