今天在写DAO层查询,遍历查询的结果集时候遇见了一个以前没有遇到过的问题,请大家帮忙O(∩_∩)O
                        rs=stmt.executeQuery(sql); 
while(rs.next()){
User user=null;
user.setAge(rs.getInt("birthdate"));
System.out.println(rs.getInt("birthdate"));
user.setName(rs.getString("name"));
System.out.println(rs.getString("name"));
user.setDate(rs.getString("birthdate"));
System.out.println(rs.getString("birthdate"));
list.add(user);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
java.sql.SQLException: 无法转换为内部表示
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:207)
at oracle.jdbc.driver.CharCommonAccessor.getInt(CharCommonAccessor.java:131)
at oracle.jdbc.driver.OracleResultSetImpl.getInt(OracleResultSetImpl.java:520)
at oracle.jdbc.driver.OracleResultSet.getInt(OracleResultSet.java:1562)
at com.bjlw.daoImpl.UserDaoImpl.query(UserDaoImpl.java:60)
at com.bjlw.serviceImpl.UserServiceImpl.query(UserServiceImpl.java:33)
at com.bjlw.servlet.UserServlet.doPost(UserServlet.java:51)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:861)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1584)
at java.lang.Thread.run(Thread.java:619)
[]

解决方案 »

  1.   

    把你的USER New 出来试试!User user=null;
    while(rs.next()){
      user=new User();
      user.................
    }
      

  2.   

    现在“java.sql.SQLException: 无法转换为内部表示”很可能是因为数据库某字段的类型出错了,比如程序将某字段当做Long类型,但是数据库存储又使用另外一种类型,建议出现这样问题认真检查一下代码,很可能是这个原因的
      

  3.   

    user.setAge(rs.getInt("birthdate"));
    System.out.println(rs.getInt("birthdate"));
    user.setName(rs.getString("name"));
    System.out.println(rs.getString("name"));
    user.setDate(rs.getString("birthdate"));
    神马情况 birthdate 到底是String类型还是int类型(rs.getInt("birthdate")  、rs.getString("birthdate") )
      

  4.   

    为了方便起见,我直接将生日作为String类型处理了这样不用中间转换了
      

  5.   

    数据库中神马类型 
    数据库中varchar2()用rs.getString("birthdate"));
    数据库中number()用rs.getInt("birthdate"));
      

  6.   

    考犯2了写错名称了。。应该是age