使用JSTL的SQL标签库碰到的问题

Date:2012-10-23              


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的函数


你可能感兴趣的:(问题,jstl,SQL标签)