Program: 174126
Project: 174126
Buggy source:
/** 
 * 根据值的定义类型调用PreparedStatement相应的set方法，将值加入到SQL参数中
 * @param ps PreparedStatement实例
 * @param value 准备加入到SQL参数中的值
 * @param index 当前参数索引
 * @throws SQLException
 */
protected void setValue(PreparedStatement ps,Object value,int index) throws SQLException {
  if (value == null) {
    ps.setNull(index,java.sql.Types.NULL);
    return;
  }
  Class<?> type=value.getClass();
  if (ClassUtils.isPrimitiveWrapper(type)) {
    type=ClassUtils.resolvePrimitiveClassName(type);
  }
  if (int.class.isAssignableFrom(type)) {
    ps.setInt(index,(Integer)value);
  }
 else   if (String.class.isAssignableFrom(type)) {
    ps.setString(index,(String)value);
  }
 else   if (long.class.isAssignableFrom(type)) {
    ps.setLong(index,(Long)value);
  }
 else   if (boolean.class.isAssignableFrom(type)) {
    ps.setBoolean(index,(Boolean)value);
  }
 else   if (double.class.isAssignableFrom(type)) {
    ps.setDouble(index,(Double)value);
  }
 else   if (char.class.isAssignableFrom(type)) {
    ps.setString(index,(Character)value + "String_Node_Str");
  }
 else   if (short.class.isAssignableFrom(type)) {
    ps.setShort(index,(Short)value);
  }
 else   if (float.class.isAssignableFrom(type)) {
    ps.setFloat(index,(Float)value);
  }
 else   if (byte.class.isAssignableFrom(type)) {
    ps.setByte(index,(Byte)value);
  }
 else   if (type.isArray()) {
    ps.setArray(index,(Array)value);
  }
 else   if (value instanceof java.sql.Timestamp) {
    ps.setTimestamp(index,(java.sql.Timestamp)value);
  }
 else   if (value instanceof java.sql.Date) {
    ps.setDate(index,(java.sql.Date)value);
  }
 else   if (value instanceof java.util.Date) {
    ps.setTimestamp(index,new java.sql.Timestamp(((java.util.Date)value).getTime()));
  }
 else   if (value instanceof java.sql.Time) {
    ps.setTime(index,(java.sql.Time)value);
  }
}

Fixed version (ground truth):
/** 
 * 根据值的定义类型调用PreparedStatement相应的set方法，将值加入到SQL参数中
 * @param ps PreparedStatement实例
 * @param value 准备加入到SQL参数中的值
 * @param index 当前参数索引
 * @throws SQLException
 */
protected void setValue(PreparedStatement ps,Object value,int index) throws SQLException {
  if (value == null) {
    ps.setNull(index,java.sql.Types.NULL);
    return;
  }
  Class<?> type=value.getClass();
  if (ClassUtils.isPrimitiveWrapper(type)) {
    type=ClassUtils.resolvePrimitiveClassName(type);
  }
  if (int.class.isAssignableFrom(type)) {
    ps.setInt(index,(Integer)value);
  }
 else   if (String.class.isAssignableFrom(type)) {
    ps.setString(index,(String)value);
  }
 else   if (long.class.isAssignableFrom(type)) {
    ps.setLong(index,(Long)value);
  }
 else   if (boolean.class.isAssignableFrom(type)) {
    ps.setBoolean(index,(Boolean)value);
  }
 else   if (double.class.isAssignableFrom(type)) {
    ps.setDouble(index,(Double)value);
  }
 else   if (char.class.isAssignableFrom(type)) {
    ps.setString(index,(Character)value + "String_Node_Str");
  }
 else   if (short.class.isAssignableFrom(type)) {
    ps.setShort(index,(Short)value);
  }
 else   if (float.class.isAssignableFrom(type)) {
    ps.setFloat(index,(Float)value);
  }
 else   if (byte.class.isAssignableFrom(type)) {
    ps.setByte(index,(Byte)value);
  }
 else   if (Blob.class.isAssignableFrom(type)) {
    ps.setBlob(index,(Blob)value);
  }
 else   if (type.isArray()) {
    ps.setArray(index,(Array)value);
  }
 else   if (value instanceof java.sql.Timestamp) {
    ps.setTimestamp(index,(java.sql.Timestamp)value);
  }
 else   if (value instanceof java.sql.Date) {
    ps.setDate(index,(java.sql.Date)value);
  }
 else   if (value instanceof java.util.Date) {
    ps.setTimestamp(index,new java.sql.Timestamp(((java.util.Date)value).getTime()));
  }
 else   if (value instanceof java.sql.Time) {
    ps.setTime(index,(java.sql.Time)value);
  }
}