Environment:Eclipse 4.2,Tomcat 7,PostgreSQL9.2 java
今天使用sql:setDataSource碰到的問題,在這裏總結一下: mysql
1.錯誤描述:invalid driver class name: "java.lang.ClassNotFoundException: org.postgresql.Driver" sql
解決方法:將postgreSQL的驅動放到網站WEB-INF文件夾下的lib中. 數據庫
2.錯誤描述: Unable to get connection, DataSource invalid: "java.sql.SQLException: No suitable driver found for jdbc:..." tomcat
解決方法:先檢查驅動的url路徑是否正確,在正確的狀況下,將postgreSQL的驅動放到tomcat根目錄的lib文件夾中就好了.這個問題應該是驅動放在項目中才致使的問題.固然mysql和oracle相似的問題,應該也能這樣解決. oracle
其實只要將postgreSQL的驅動放到tomcat的lib中,就能解決上述的兩個問題. jsp
3.錯誤描述:按照參考書<Java Web整合開發王者歸來>(P248),使用${ dataSource.class.name } 引起錯誤. 函數
解決方法:引起問題緣由有2:a.dataSource.class.name自己會引起錯誤;b.沒有設置sql:setDataSource的scope.設置scope後,使用${ dataSource }而不是${ dataSource.class.name }. post
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的函數