gpt4 book ai didi

java - 从 Java 代码将数据保存在 blob 中

转载 作者:行者123 更新时间:2023-11-30 00:47:18 26 4
gpt4 key购买 nike

我正在使用下面的 Java 代码将数据保存到表中

    ObjectInputStream ois = null;
try {
ois = new ObjectInputStream(new ByteArrayInputStream(string));
} catch (IOException e) {
e.printStackTrace();
}
String query = "Insert into Test(window,windowObject) values (?,?)";
PreparedStatement pst = connection.prepareStatement(query);

pst.setString(1, "harom");
pst.setBinaryStream(2, ois);
pst.execute();
}

但是遇到异常

SEVERE: >>java.lang.AbstractMethodError: com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.setBinaryStream(ILjava/io/InputStream;)V

at test.DragDropViewModel$1.execute(DragDropViewModel.java:62) at com.csdcsystems.amanda.transaction.Transaction.executeCommand(Transaction.java:164) at test.DragDropViewModel.testConnnection(DragDropViewModel.java:48)

有人知道我做错了什么吗?我的表定义

window  varchar no  8000
windowObject text no 16

使用这些驱动程序

<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
</dependency>
<dependency>
<groupId>com.microsoft.jdbc</groupId>
<artifactId>sqljdbc4</artifactId>
</dependency>

最佳答案

查看你的代码

PreparedStatement pst = connection.prepareStatement(query);
pst.setString(1, "harom");
pst.setBinaryStream(2, ois);
PreparedStatement pst = connection.prepareStatement(query);
pst.setString(1, "harom");
pst.setBinaryStream(2, ois);
pst.execute();

为什么有两组相同的线?这是你的错字吗?应该是

PreparedStatement pst = connection.prepareStatement(query);
pst.setString(1, "harom");
pst.setBinaryStream(2, ois);
pst.execute();

此外,windowObject列应该是blob/binary而不是text

除此之外发生此错误的原因通常是您的 JDBC 驱动程序实现的 JDBC API 版本比 JRE 中包含的版本旧。只要您不尝试使用新 API 中出现的方法,这些旧版本就可以。

我建议将其升级到与您的数据库版本一起发布的版本,然后重试。

关于java - 从 Java 代码将数据保存在 blob 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21257489/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com