关于prepareStatement带日期参数的问题

fuhonghao 2012-06-20 05:51:07
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)

...全文
343 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fuhonghao 2012-06-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
是你数据库的数据类型不是date,n.setTime(rs.getDate(4));当你数据是其他类型, 这句话还是不会报错,你用rs.getString(4)也不会报错的,因为这是运行时错误,运行前检查不出来。所以你查下你数据库存的时什么类型,然后转化为Date类型就好了。
[/Quote]

已经解决了。是实体类date包倒错了。应该用import java.sql.Date 我倒的是java.util.*
sdojqy1122 2012-06-20
  • 打赏
  • 举报
回复
是你数据库的数据类型不是date,n.setTime(rs.getDate(4));当你数据是其他类型, 这句话还是不会报错,你用rs.getString(4)也不会报错的,因为这是运行时错误,运行前检查不出来。所以你查下你数据库存的时什么类型,然后转化为Date类型就好了。
fuhonghao 2012-06-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
你前台传过来的的日期是需要转换一下的,转成date在set进来
[/Quote]
我没有说清楚。set进去的是数据库里的值
而且实体类time我定的是DATE类型的
代码写完也没有报错
Everliang 2012-06-20
  • 打赏
  • 举报
回复
你前台传过来的的日期是需要转换一下的,转成date在set进来

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧