为何 preparedStatement类中的setDate(index,Date)方法中 date 值不能传入java.util.date类型呢 而是java.sql.date 类型 关键是java.sql.date 不是extends java.util.date的吗?

解决方案 »

  1.   

    虽然JDK中有java.sql.date extends java.util.date,但preparedStatement的setDate方法中的DATE参数必须是java.sql.date
      

  2.   

    java.sql.date 更丰富一点 
      

  3.   


    虽然java.sql.Datejava.util.Date的子类
    但是sql.Date主要是为了配合数据库sql而设置的数据类型。
    规范的sql.Date只包含年月日信息,而时分秒毫秒都会清零。
    比如常见的格式为:YYYY-MM-DD。
    当从数据库中查找通过getDate()方法来获得值的时候,java程序会参照sql.Date来格式化数据库中的数据。
    如果我们想得到精确的数据,我们通常就用Timestamp来做了!
      

  4.   

    一一对应的关系,看API应该知道的
      

  5.   

    sql是util下的....  但是preparedStatement  setDate(java.sql.Date theDate)
      

  6.   

    java.util.Date 是 java.sql.Date 的父类(注意拼写)
    前者是常用的表示时间的类,我们通常格式化或者得到当前时间都是用他
    后者之后在读写数据库的时候用他,因为PreparedStament的setDate()的第2参数和ResultSet的
    getDate()方法的第2个参数都是java.sql.Date 转换是
    java.sql.Date date=new Java.sql.Date();
    java.util.Date d=new java.util.Date (date.getTime());
    反过来是一样的。
      

  7.   

    java.util.Date实际是一个时间戳,它的数值是年月日包括当前的时间
    java.sql.Date也是一个时间戳,但它把当前的时间剪掉了,保证它一定是那个日期的0点0分0秒的时间戳所以如果你用new java.util.Date()会得到当前时间
    但如果用new java.sql.Date(new java.util.Date().getTime()),得到的时间会是那一天的0点0分0秒