Java MySQL+;JDBC updateBlob和updateBinaryStream抛出NotUpdateable

Java MySQL+;JDBC updateBlob和updateBinaryStream抛出NotUpdateable,java,mysql,sql,jdbc,Java,Mysql,Sql,Jdbc,我在Google和StackOverflow上搜索了两个多小时,但还没有找到解决这个问题的方法。所以我转而问这个问题 我正在做一个需要将数据插入表中的项目。我需要使用ResultSet类中的方法(例如Updatexxxx和insertRow) 特别是,我需要能够插入一个二进制流/blob(在我的例子中,这两种方法都可以)。但是,MySQL Java驱动程序实现不支持此()。事实上,它不支持任何updateBlob或updateBinaryStream方法。。它们抛出不可更新的 在您发布我需要以支

我在Google和StackOverflow上搜索了两个多小时,但还没有找到解决这个问题的方法。所以我转而问这个问题

我正在做一个需要将数据插入表中的项目。我需要使用ResultSet类中的方法(例如Updatexxxx和insertRow)

特别是,我需要能够插入一个二进制流/blob(在我的例子中,这两种方法都可以)。但是,MySQL Java驱动程序实现不支持此()。事实上,它不支持任何updateBlob或updateBinaryStream方法。。它们抛出不可更新的

在您发布我需要以支持ResultSet.CONCUR_UPDATEABLE的方式创建语句之前,请确保我已经这样做并检查了足够多次。请参阅下文:

// Create statement that is insensitive to insertion of data, and allows updating.
Statement s = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);

// Get an empty query ready for insertion of data
ResultSet rs = s.executeQuery("SELECT * FROM TableName WHERE 1=0");

// This is a stream of bytes. If it were a String I would be fine.
rs.updateBinaryStream("password", new ByteArrayInputStream(db.password), db.password.length);
所以问题的关键是,从我所看到的,没有一种等效的方法可以做到这一点,而不使用不同的驱动程序

如果你知道一种方法让它发挥作用,我绝对愿意听你这么说。即使这只是一个理论。我最不想做的事情是创建多个列,并将数组存储为字节的BIGINT组合

提前感谢,,
尼克。

不要使用可更新的结果集,尤其是现在你已经得出结论认为它不起作用了

由于您正在“处理一个需要将数据插入表中的项目”,因此应该尝试使用实际的
INSERT
语句

此外,您还可以使用
byte[]
方法,因为这就是您所拥有的,而不是尝试使用
InputStream
方法

String sql = "INSERT INTO TableName (password) VALUES (?)";
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
    stmt.setBytes(1, db.password);
    stmt.executeUpdate();
}

您需要使用
insertRow()
?真正地为什么?@Andreas未知数据库软件的交叉兼容性。
INSERT
语句的交叉兼容性如何低于使用伪
SELECT
语句的可更新
ResultSet
?公平点。我来试试,我来试试。谢谢