如果我总是在带有 varchar 的准备语句中设置 null 会发生什么?
我有这个方法使用 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 的值为空,我需要使用 "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 )
有什么替代方案?
I have this method to insert data using jdbc that will insert the value according to the java type. Something like this:
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++;
It has a problem though ( beside it is all commented :P )
If the value of o is null, I'm requiered to use "setNull(int, int)" method, but I have to specify the SQL type:
...Note: You must specify the parameter's SQL type.
But... I don't know the type, so I'm considering use always VARCHAR ( just because )
setNull( index,Types.VARCHAR); .
What would happen if I set null in prepared statement with varchar always?
I'm using:
Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
With Oracle JDB driver:
11.1.0.7.0-Production ( ojdbc6.jar )
What would be an alternative?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您不能通过 ResultSetMetaData 接口查询数据库并获取列类型吗?
Could you not interrogate the database and get the column type via the
ResultSetMetaData
interface?