如题

解决方案 »

  1.   

    对你的题目描述不是很清楚!
    如果你是通过JDBC操作的话,你是不可以把null值插入到date类型的字段的。
    如果你是直接运行SQL(insert into tab_name values(null))的话,是可以的。
      

  2.   


    PreparedStatement stmt = ...stmt.setString(index++, name);
    stmt.setNull(index++, Types.DATE);...
      

  3.   

    是不是那个字段有not null约束?
      

  4.   

    你如果在数据库中约束该字段为not null,或者在xxx.hbm.xml中配置该字段为not null,就无法为date类型赋null
      

  5.   

    JDBC 里面对于明确想设定它的值为 null 时,推荐 stmt.setNull(xxx,Types.Date);之前我经常用 stmt.setDate(xxx, null); 这个跟版本和厂商有很大关系,在 Oracle 9 到 10.2 的不同版本的驱动程序和服务端版本的组合下有几种不同的结果,有时候会出错,有时候不会出错,所以代码还是应该按 JDBC 规范里面说明的方式去做,免得以后不知道哪里面会出错。
      

  6.   

    我用的是spring的JdbcTemplate,这封装类不能插NULL,若是NULL字段可以不插。
    例如:private void insert(Object[] objs,Object[] temp3,int rowNO){

    StringBuffer sql =new StringBuffer();
    sql.append("insert into EIS_DeliveryOTD(Org_Code,Org_ID,ORG_Name,SalesOrderNo,ItemNo,OrderWeight,");
    if(objs[6]!=null){
    sql.append("DeliveryDate,");
    }
    sql.append("DeliveryWeight,");
    if(objs[8]!=null){
    sql.append("DNDate,");
    }
    sql.append("CustomerCode,CustomerCName,OrderType,");
    if(objs[12]!=null){
    sql.append("DeliveryTime,");
    }
    sql.append("DeliveryRate,DNTime,DNRate,Reason,UpdatedDate)");
    sql.append("values(?,?,?,?,?,?,");
    if(objs[6]!=null){
    sql.append("?,");
    }
    sql.append("?,");
    if(objs[8]!=null){
    sql.append("?,");
    }
    sql.append("?,?,?,");
    if(objs[12]!=null){
    sql.append("?,");
    }
    sql.append("?,?,?,?,?)");

    // log.info(sql.toString());
    jt.update(sql.toString(),temp3);
    }
    谢谢各位回贴