private void fillPreparedStatement(PreparedStatement ps, Object value, Class
valueType, int position)
throws SQLException, InvalidObjectException {
if (valueType == null) {
throw new InvalidObjectException("Type cannot be null at the same
time value is null");
}
else {
if (valueType.equals(Double.class)) {
if (value != null) {
ps.setDouble(position, ((Double) value).doubleValue());
}
else {
ps.setNull(position, Types.NUMERIC);
}
}
else if (valueType.equals(Integer.class)) {
if (value != null) {
ps.setInt(position, ((Integer) value).intValue());
}
else {
ps.setNull(position, Types.NUMERIC);
}
}
else if (valueType.equals(Long.class)) {
if (value != null) {
ps.setLong(position, ((Long) value).longValue());
}
else {
ps.setNull(position, Types.NUMERIC);
}
}
else if (valueType.equals(Float.class)) {
if (value != null) {
ps.setFloat(position, ((Float) value).floatValue());
}
else {
ps.setNull(position, Types.NUMERIC);
}
}
else if (valueType.equals(String.class)) {
if (value != null) {
ps.setString(position, (String) value);
}
else {
ps.setNull(position, Types.VARCHAR);
}
}
else if (valueType.equals(Timestamp.class)) {
if (value != null) {
ps.setTimestamp(position, (Timestamp) value);
}
else {
ps.setNull(position, Types.TIMESTAMP);
}
}
}
The problem with your method is that the API doesn't have any knowledge of the Class valueType parameter.