getString not implemented for class oracle.jdbc.driver.T4CBlobAccessor

wind_rosebush 2012-03-01 09:49:45
问题很奇怪,项目布署在tomcat,oc4j上都没问题,数据库用的oracle.
但是在weblogic 11上,就报这个问题:

12/02/28 18:13:58 java.lang.Exception: 无效的列类型: getString not implemented for class oracle.jdbc.driver.T4CBlobAccessor


我怀疑是驱动的问题,在weblogic 11上,weblogic 并没有用项目中的ojdbc14驱动,而是用的自身带的驱动。我怀疑是这样的问题,但不知道如何去识别。

我查了些资料,并未解决问题,请大神们赐教。
...全文
3668 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wind_rosebush 2012-06-05
  • 打赏
  • 举报
回复
此问题已解决,果然是驱动的问题,项目布署在weblogic 10.3.4上之后,便使用10.3.4的驱动了,具体原因常未得知。
修改了代码,诸位一看就明白,片断如下:

for (int i=0; i<nCols; i++){
if(columnType[i] == Types.CLOB)
row[i] = clobToString(rset.getClob(i+1));
else if(columnType[i] == Types.BLOB)
row[i] = blobToString(rset.getBlob(i+1));
else
row[i] = rset.getString(i+1);
}



/**
* 将"Clob"型数据转换成"String"型数据
* 需要捕获"SQLException","IOException"
* prama: colb1 将被转换的"Clob"型数据
* return: 返回转好的字符串
* @throws SQLException
* @throws IOException */
private static String clobToString(Clob colb) throws SQLException, IOException
{
String outfile = "";
if(colb != null){
//oracle.sql.CLOB clob = (oracle.sql.CLOB)colb1;
java.io.Reader is = colb.getCharacterStream();
java.io.BufferedReader br = new java.io.BufferedReader(is);
String s = br.readLine();
while (s != null) {
outfile += s;
s = br.readLine();
}
is.close();
br.close();
}
return outfile;
}

/**
* 将"Clob"型数据转换成"String"型数据
* 需要捕获"SQLException","IOException"
* prama: colb1 将被转换的"Clob"型数据
* return: 返回转好的字符串
* @throws SQLException
* @throws IOException */
private static String blobToString(Blob blob) throws SQLException, IOException
{
// Blob 是二进制文件,转成文字是没有意义的
// 所以根据传输协议,EzManager的传输协议是无法支持的
byte[] base64;
String newStr = ""; //返回字符串

if(blob!=null)
{
try {
base64 = org.apache.commons.io.IOUtils.toByteArray(blob.getBinaryStream());
newStr = new BASE64Encoder().encodeBuffer(base64);
} catch (IOException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
return newStr;
}

dracularking 2012-04-24
  • 打赏
  • 举报
回复
你所使用的oracle.jdbc.driver.T4CBlobAccessor類得實現getString方法
而該類是包含在某個jar包中,比如ojdbc5,ojdbc6,ojdbc14等
試圖確認所使用的jar包中的類實現了該方法,可以先像2樓那樣用jar包篩選法,
也可以直接去確認是否有該方法
superjava_2006 2012-04-24
  • 打赏
  • 举报
回复
无效的列类型;你取数据的列不是字符串类型的吧,却用getString去获取数据,看后面这个类T4CBlobAccessor,不会是Blob类型的字段,你用getString去获取的吧
trh3037 2012-04-23
  • 打赏
  • 举报
回复
我也出现了这个问题,请问楼主解决了么?
wcl_friend 2012-03-01
  • 打赏
  • 举报
回复
能把weblogic自带的驱动删掉吗,或者禁用
wind_rosebush 2012-03-01
  • 打赏
  • 举报
回复
weblogic 是10.3.4的

67,541

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧