为什么 PreparedStatement.setNull 需要 sqlType?
根据ReadyStatement.setNull的java文档:“注意:您必须指定参数的SQL类型”。该方法需要列的 SQL 类型的原因是什么?
我注意到传递java.sql.Types.VARCHAR也适用于非varchar列。是否存在 VARCHAR 不适合的情况(某些列类型或某些数据库提供程序)?
谢谢。
根据ReadyStatement.setNull的java文档:“注意:您必须指定参数的SQL类型”。该方法需要列的 SQL 类型的原因是什么?
我注意到传递java.sql.Types.VARCHAR也适用于非varchar列。是否存在 VARCHAR 不适合的情况(某些列类型或某些数据库提供程序)?
谢谢。
根据ReadyStatement.setNull的java文档:“注意:您必须指定参数的SQL类型”。该方法需要列的 SQL 类型的原因是什么?
为了获得最大的兼容性;根据规范,有些数据库不允许将非类型化的 NULL 发送到基础数据源。
我注意到传递java.sql.Types.VARCHAR也适用于非varchar列。是否存在 VARCHAR 不适合的情况(某些列类型或某些数据库提供程序)?
我不认为这种行为真的是规范的一部分,或者如果是,那么我确信那里有某种隐含的胁迫。在任何情况下,都不建议依赖这种在基础数据存储更改时可能会中断的行为。为什么不直接指定正确的类型呢?
JDBC 驱动程序似乎正在远离 。请参阅添加对 setObject(<arg>, null) 的支持。setNull
我支持更合乎逻辑的行为的数据库列表是:
我不支持此逻辑行为的数据库列表是: