急,各位帮帮忙 用jdbc连接写blob到oracle成功,但换成jndi就不行了 用jdbc连接写blob到oracle成功,但换成jndi就不行了环境:eclipse 3.1 ibm websphere5.1提示回滚了,多种设置setAutoCommit (true/false)都不行,查了很多资料无法解决,请大家帮忙 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://blogger.org.cn/blog/more.asp?name=hongrui&id=5306 http://blogger.org.cn/blog/more.asp?name=hongrui&id=5340 如果是WebLogic服务器的话,注意Blob的写法要判断一下是哪个实现类进行特殊处理一下。 重量级服务器对待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(); 其它都没问题,我也基本是这么做的,关键是 //得到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 WebSphere的POOL有问题吗?如果非得有问题就把WebLogic的weblogic.jar加到CLASSPATH中去 那个weblogic有48M,太大了,有什么方便的方法么 struts2 ajax 问题 jsp如何使用ImgUpload.CAB插件,在向编辑器中粘贴本地图片,如何上传到服务器 奇怪了!!!!tomcate+花生壳问题 jsp对不同浏览器版本的问题 下周未攻击jsp网站 大家给点意见 Mybatis3.0如何做批量update 请问在网站后台删除数据是直接物理删除好,还是通过标记的改变使前台不可见从而达到删除的目的要好些? 两个关于java的问题 一个关于字符串长度的问题 在servlet中如何打开一个新的浏览器窗口 <filter-mapping>问题 struts2的web程序在resin上报错
所以此时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();
//得到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