当前位置: 代码迷 >> Java Web开发 >> 关于prepareStatement带日期参数的有关问题
  详细解决方案

关于prepareStatement带日期参数的有关问题

热度:3105   发布时间:2013-02-25 21:17:27.0
关于prepareStatement带日期参数的问题
public List<News> searchAllNews() {
List<News> list=new ArrayList<News>();
conn=super.getConnection();
String sql="select * from(select rownum as r,t.* from " +
"(select * from easybuy_news order by en_create_time desc )" +
"t where rownum<=10)where r>0";
try {
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();
if(rs.next()){
News n=new News();
n.setId(rs.getInt(1));
n.setTitle(rs.getString(2));
n.setContent(rs.getString(3));
n.setTime(rs.getDate(4));
list.add(n);
}
super.allClose(rs, ps, conn);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
   
}
为什么运行的时候一直报n.setTime(rs.getDate(4))这句的错,难道这样写不正确么?
java.lang.IllegalArgumentException
java.sql.Date.valueOf(Date.java:103)
oracle.jdbc.driver.CharCommonAccessor.getDate(CharCommonAccessor.java:413)
oracle.jdbc.driver.OracleResultSetImpl.getDate(OracleResultSetImpl.java:743)
org.apache.tomcat.dbcp.dbcp.DelegatingResultSet.getDate(DelegatingResultSet.java:244)
org.apache.tomcat.dbcp.dbcp.DelegatingResultSet.getDate(DelegatingResultSet.java:244)
com.yimai.dao.impl.NewsDaoOraImpl.searchAllNews(NewsDaoOraImpl.java:31)
com.yimai.biz.impl.NewsBizImpl.searchAllNews(NewsBizImpl.java:13)
com.yimai.web.NewsServlet.doGet(NewsServlet.java:15)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)



------解决方案--------------------------------------------------------
你前台传过来的的日期是需要转换一下的,转成date在set进来
------解决方案--------------------------------------------------------
是你数据库的数据类型不是date,n.setTime(rs.getDate(4));当你数据是其他类型, 这句话还是不会报错,你用rs.getString(4)也不会报错的,因为这是运行时错误,运行前检查不出来。所以你查下你数据库存的时什么类型,然后转化为Date类型就好了。