gpt4 book ai didi

oracle - ResultSet.getBlob() 异常

转载 作者:行者123 更新时间:2023-12-02 11:43:11 26 4
gpt4 key购买 nike

代码:

ResultSet rs = null;

try {
conn = getConnection();
stmt = conn.prepareStatement(sql);
rs = stmt.executeQuery();

while (rs.next()) {
Blob blob = rs.getBlob("text");
byte[] blobbytes = blob.getBytes(1, (int) blob.length());
String text = new String(blobbytes);

结果:

java.sql.SQLException: Invalid column type: getBLOB not implemented for class oracle.jdbc.driver.T4CClobAccessor
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
at oracle.jdbc.driver.Accessor.unimpl(Accessor.java:357)
at oracle.jdbc.driver.Accessor.getBLOB(Accessor.java:1299)
at oracle.jdbc.driver.OracleResultSetImpl.getBLOB(OracleResultSetImpl.java:1280)
at oracle.jdbc.driver.OracleResultSetImpl.getBlob(OracleResultSetImpl.java:1466)
at oracle.jdbc.driver.OracleResultSet.getBlob(OracleResultSet.java:1978)

我的类路径中有 class12_10g.zip。我用谷歌搜索,发现基本上只有一个网站可以解决这个特定问题,但它没有帮助。

有人对此有什么想法吗?

<小时/>

一点背景:我们正在将其中一个数据库从 MySQL 转换为 Oracle。在 MySQL DB 中,其中一个字段是长文本,在代码中被视为 BLOB。默认情况下,SQL 开发人员工作台将长文本转换为 CLOB(对我来说有意义),但代码需要 Blob。我猜这个错误不太好:oracle.jdbc.driver.T4CClobAccessor(尽管它确实提到了 Clob)。

当我尝试以下操作时:

rs = stmt.executeQuery();

while (rs.next()) {
byte[] blobbytes = rs.getBytes("text");
String text = new String(blobbytes);
}

它抛出了一个不受支持的异常 - 我首先要做的就是将新创建的 Oracle DB 中的类型与代码所期望的类型进行比较(不幸的是,我只是假设它们会匹配)。

对不起各位!我并没有花太多心思,现在我必须弄清楚为什么最初的开发人员对长文本使用 BLOB 类型

最佳答案

不确定是否使 Blob 对象正常工作 - 我通常会跳过 Blob 步骤:

rs = stmt.executeQuery();

while (rs.next()) {
byte[] blobbytes = rs.getBytes("text");
String text = new String(blobbytes);
}

关于oracle - ResultSet.getBlob() 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1228827/

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