我正在设置这样的SQL准备语句:

prd.setBytes(i+1, temp_value);


其中temp_value的类型为byte []。

最后,我将prd语句添加到这样的批处理中:

prd.addBatch();
prd.executeBatch();


executeBatch给了我一个例外:
java.sql.BatchUpdateException:将数据类型varbinary转换为数值时出错。

无论DataBase表中的字段是Numeric类型还是任何其他类型,是否都可以将Bytes简单地添加到准备好的语句中?

我必须具体说明要插入的类型吗?

最佳答案

setBytes方法旨在用于SQL BLOB类型,例如varbinarylongvarbinary等。对于数字类型,您需要使用BigDecimalBigInteger或数字基元。

允许setBytes与非二进制类型一起使用的问题是系统独立性:您需要将驱动程序的预期布局与一个多字节数字相匹配,并具有可能需要JDBC驱动程序编写者发布的非常复杂的结构。发布此布局后,他们的驱动程序将不得不终身与其兼容。但是,大多数驱动程序编写者都希望避免与客户端代码如此紧密地耦合。

10-01 06:24