【发布时间】:2015-10-02 13:03:51
【问题描述】:
我正在使用以下函数将二进制流值设置为准备好的语句。
void setBlobValue(String value, PreparedStatement prepStmt, int index) throws SQLException, IOException {
if (value != null) {
InputStream inputStream = new ByteArrayInputStream(CharacterEncoder.getSafeText(value).getBytes());
if (inputStream != null) {
prepStmt.setBinaryStream(index, inputStream, inputStream.available());
} else {
prepStmt.setBinaryStream(index, inputStream, 0);
}
} else {
prepStmt.setBinaryStream(index, null, 0);
}
}
我使用此函数为 H2、mysql、mssql、oracle、oracle_rac、DB2 和 informix 数据库设置准备好的语句。当使用informix 并发送null 作为值时,setBinaryStream 方法会给出NullPointerException,即使在其他数据库中它也可以正常工作。
这是什么原因?我该如何解决这个问题?
【问题讨论】:
-
可能是驱动的bug,换成
setNull试试吧
标签: database jdbc blob informix