VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1030|回复: 5

急,各位帮帮忙 用jdbc连接写blob到oracle成功,但换成jndi就不行了

[复制链接]

1

主题

2

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-10-14 12:00:01 | 显示全部楼层 |阅读模式
用jdbc连接写blob到oracle成功,但换成jndi就不行了

提示回滚了,多种设置setAutoCommit (true/false)都不行,查了很多资料无法解决,请大家帮忙
回复

使用道具 举报

0

主题

39

帖子

23.00

积分

新手上路

Rank: 1

积分
23.00
发表于 2020-10-14 16:30:01 | 显示全部楼层
如果是WebLogic服务器的话,注意Blob的写法要判断一下是哪个实现类进行特殊处理一下。
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-10-14 16:45:01 | 显示全部楼层
重量级服务器对待Blob,Clob有自己的特性
所以此时JDBC与JNDI的进库操作会有差异,出库就无所谓了
下段Coding希望对你有帮助

    //通过JNDI获得数据库连接
    Context context = new InitialContext();
    ds = (DataSource) context.lookup("ORA_JNDI");
    Connection con = ds.getConnection();
    con.setAutoCommit(false);
    Statement st = con.createStatement();
    //插入一个空对象empty_clob()
    st.executeUpdate("insert into TESTCLOB (ID, NAME, CLOBATTR) values (1, "thename", empty_clob())");
    //锁定数据行进行更新,注意“for update”语句
    ResultSet rs = st.executeQuery("select CLOBATTR from TESTCLOB where ID=1 for update");
    if (rs.next())
    {
        //得到java.sql.Clob对象后强制转换为weblogic.jdbc.vendor.oracle.OracleThinClob(不同的App Server对应的可能会不同)
        weblogic.jdbc.vendor.oracle.OracleThinClob clob = (weblogic.jdbc.vendor.oracle.OracleThinClob) rs.getClob("CLOBATTR");
        Writer outStream = clob.getCharacterOutputStream();
        //data是传入的字符串,定义:String data
        char[] c = data.toCharArray();
        outStream.write(c, 0, c.length);
    }
    outStream.flush();
    outStream.close();
    con.commit();
    con.close();
回复

使用道具 举报

1

主题

2

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
 楼主| 发表于 2020-10-14 17:45:01 | 显示全部楼层
其它都没问题,我也基本是这么做的,关键是
//得到java.sql.Clob对象后强制转换为weblogic.jdbc.vendor.oracle.OracleThinClob(不同的App Server对应的可能会不同)
        weblogic.jdbc.vendor.oracle.OracleThinClob clob = (weblogic.jdbc.vendor.oracle.OracleThinClob) rs.getClob("CLOBATTR");

这一句中的weblogic.jdbc.vendor.oracle.OracleThinClob我在WebSphere中找不到类似的类,无法替换,我被卡在这里了,因为必须用WebSphere
回复

使用道具 举报

0

主题

39

帖子

23.00

积分

新手上路

Rank: 1

积分
23.00
发表于 2020-10-14 18:00:01 | 显示全部楼层
WebSphere的POOL有问题吗?如果非得有问题就把WebLogic的weblogic.jar加到CLASSPATH中去
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-10-14 20:45:01 | 显示全部楼层
那个weblogic有48M,太大了,有什么方便的方法么
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表