我正在使用预准备语句批量插入记录。 Iam迭代包含值的列表,并且它们的dataTypes不同。其中一个数据类型是BigDecimal,当我尝试设置调用preparestatement时,它会抛出空指针异常。
我的代码
int count = 1;
for (int j = 0; j < list.size(); j++) {
if(list.get(j) instanceof Timestamp) {
ps.setTimestamp(count, (Timestamp) list.get(j));
} else if(list.get(j) instanceof java.lang.Character) {
ps.setString(count, String.valueOf(list.get(j)));
}
else if(list.get(j) instanceof java.math.BigDecimal) {
ps.setBigDecimal(count, (java.math.BigDecimal)list.get(j));
} else {
ps.setObject(count, list.get(j));
}
count++;
}
我尝试了2种转换方法,转换对象并尝试创建BigDecimal类型的新对象
ps.setBigDecimal(count, new BigDecimal(list.get(j).toString));
两个人都没有解决我的问题。它抛出空指针异常。
帮助表示赞赏。
由于
答案 0 :(得分:1)
这是我发现的解决方案,它似乎对所有类型的对象都是有用的。
public static BigDecimal getBigDecimal( Object value ) {
BigDecimal ret = null;
if( value != null ) {
if( value instanceof BigDecimal ) {
ret = (BigDecimal) value;
} else if( value instanceof String ) {
ret = new BigDecimal( (String) value );
} else if( value instanceof BigInteger ) {
ret = new BigDecimal( (BigInteger) value );
} else if( value instanceof Number ) {
ret = new BigDecimal( ((Number)value).doubleValue() );
} else {
throw new ClassCastException("Not possible to coerce ["+value+"] from class "+value.getClass()+" into a BigDecimal.");
}
}
return ret;
}
这是链接: http://www.java2s.com/Code/Java/Data-Type/ConvertObjecttoBigDecimal.htm