如果我在准备语句中使用varchar设置null总是会发生什么?

时间:2009-07-31 22:57:17

标签: java jdbc oracle10g prepared-statement

我有这个方法使用jdbc插入数据,它将根据java类型插入值。像这样:

Object o = map.get( key );

if( o == null ) {
    // setNull( index );
} else  if( o instanceof String ) {
    // setString( index, (String) o );
} else if( o instanceof Timestamp ) {
    // setTimestampt( index, ( Timestamp ) o );
} else if( o instanceof Integer ) {
    // setInt( index, (Integer) o );
}
    index++;

虽然有问题(旁边都是评论:P)

如果 o 的值为null,我需要使用"setNull(int, int)"方法,但我必须指定SQL类型

  

... 注意:您必须指定参数的SQL类型。

但是...我不知道类型,所以我考虑使用总是VARCHAR(只是因为)

setNull( index,Types.VARCHAR); .

如果我在预备语句中使用varchar设置null,会发生什么?

我正在使用:

Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production

使用Oracle JDB驱动程序:

11.1.0.7.0-Production ( ojdbc6.jar ) 

什么是另类?

1 个答案:

答案 0 :(得分:2)

您是否可以通过ResultSetMetaData界面询问数据库并获取列类型?