ITPUB??ì3
ITPUB论坛 » Java入门与认证版 » 关于clob字段的插入

新一届的微软MVP评选已经开始,欢迎各位推荐!

标题: 关于clob字段的插入
离线 cat_ww



精华贴数 0
个人空间 0
技术积分 78 (20085)
社区积分 0 (1671013)
注册日期 2007-12-29
论坛徽章:0
      
      

发表于 2008-6-17 14:32 
关于clob字段的插入

oracle 11g jdbc6版本,java1.6的环境下,插入一个clob字段,在使用以下语句时
Writer clobWriter = ((oracle.sql.CLOB)sugBookClob).getCharacterOutputStream();
最后的getCharacterOutputStream()是被横线划掉的,不知现在是用什么方法代替的
在网上查了很久,都是用类似的方法做的,不过日期很旧了,不知新的jdbc和java1.6是怎么做的,


只看该作者    顶部
离线 cat_ww



精华贴数 0
个人空间 0
技术积分 78 (20085)
社区积分 0 (1671013)
注册日期 2007-12-29
论坛徽章:0
      
      

发表于 2008-6-19 22:40 
能不能推荐一些文档呢


只看该作者    顶部
离线 javalod
天下江湖


精华贴数 0
个人空间 0
技术积分 587 (3266)
社区积分 6 (14895)
注册日期 2008-6-4
论坛徽章:5
行业板块每日发贴之星开发板块每日发贴之星开发板块每日发贴之星开发板块每日发贴之星开发板块每日发贴之星 
      

发表于 2008-6-20 11:25 
*** 作者被禁止或删除 内容自动屏蔽 ***
在线/呼叫 justforregister
SAP


精华贴数 1
个人空间 10
技术积分 40929 (18)
社区积分 11379 (137)
注册日期 2005-6-10
论坛徽章:83
现任管理团队成员生肖徽章2007版:兔开发板块每日发贴之星开发板块每日发贴之星开发板块每日发贴之星生肖徽章2007版:猪
开发板块每日发贴之星开发板块每日发贴之星开发板块每日发贴之星   

发表于 2008-6-20 22:51 
去看一下被删的api, 他会告诉你用哪个api的


__________________
只看该作者    顶部
离线 cat_ww



精华贴数 0
个人空间 0
技术积分 78 (20085)
社区积分 0 (1671013)
注册日期 2007-12-29
论坛徽章:0
      
      

发表于 2008-6-23 10:29 
刚搞好,只能用过期的clob.getCharacterOutputStream();代码如下:
try
        {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            con = DriverManager.getConnection(dbUrl,dbUser,dbPwd);
            stmt=con.createStatement();
            con.setAutoCommit(false);
            stmt.executeUpdate("insert into magazine (id,pubtime,title,content) " +
                    "values (magazine_code.nextval,sysdate,'"+title+"',empty_clob())");
            rs=stmt.executeQuery("select content from magazine where id=1 for update");
            rs.next();
            CLOB clob=((OracleResultSet)rs).getCLOB("content");
            Writer wr;
            wr=clob.getCharacterOutputStream();
            wr.write(content);
            wr.flush();
            wr.close();
            con.commit();
            con.setAutoCommit(true);
            rs.close();
            stmt.close();
            con.close();
        }
看了oracle11g的文档b28359_01中的jdbc部分,他给出的clob流写入代码有问题,在java编译时报错,代码如下:
java.io.Writer writer;

// read data into a character array
char[] data = {'0','1','2','3','4','5','6','7','8','9'};

// write the array of character data to a Clob
writer = ((CLOB)my_clob).setCharacterStream();
writer.write(data);
writer.flush();
writer.close();
...
其中writer = ((CLOB)my_clob).setCharacterStream();的writer是java.io.writer,clob是CharacterStream,不匹配,通不过编译,
不知最新版的java1.6和ojdbc6怎样做的,至少不要用过期的方法来实现.


只看该作者    顶部
离线 cat_ww



精华贴数 0
个人空间 0
技术积分 78 (20085)
社区积分 0 (1671013)
注册日期 2007-12-29
论坛徽章:0
      
      

发表于 2008-6-24 21:16 
终于搞好了,不警告了,如果大家有需要我就贴出来,


只看该作者    顶部
在线/呼叫 justforregister
SAP


精华贴数 1
个人空间 10
技术积分 40929 (18)
社区积分 11379 (137)
注册日期 2005-6-10
论坛徽章:83
现任管理团队成员生肖徽章2007版:兔开发板块每日发贴之星开发板块每日发贴之星开发板块每日发贴之星生肖徽章2007版:猪
开发板块每日发贴之星开发板块每日发贴之星开发板块每日发贴之星   

发表于 2008-6-24 21:58 
贴啊


__________________
只看该作者    顶部
离线 it01
今年找工作,加油!


精华贴数 2
个人空间 30
技术积分 14225 (79)
社区积分 34457 (25)
注册日期 2002-5-25
论坛徽章:18
现任管理团队成员     
      

发表于 2008-6-24 22:26 
贴阿


__________________
跟yining大师学习,拜矛以大师为师傅
还有1个月正式找工作,加油!
天虎老大的地盘,多学习
要经常去IT职业生涯看看
只看该作者    顶部
离线 cat_ww



精华贴数 0
个人空间 0
技术积分 78 (20085)
社区积分 0 (1671013)
注册日期 2007-12-29
论坛徽章:0
      
      

发表于 2008-6-25 11:17 
try
        {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            con = DriverManager.getConnection(dbUrl,dbUser,dbPwd);
            stmt=con.createStatement();
            con.setAutoCommit(false);
            stmt.executeUpdate("insert into magazine (id,pubtime,title,content) " +
                    "values (magazine_code.nextval,sysdate,'"+title+"',empty_clob())");
            rs=stmt.executeQuery("select content from magazine where id="+Id+" for update");
            rs.next();
            CLOB clob=((OracleResultSet)rs).getCLOB("content");
            clob.putChars(1, content.toCharArray());
            PreparedStatement pstmt=con.prepareStatement("update magazine set content=? where id="+Id);
            pstmt.setClob(1,clob);
            pstmt.executeUpdate();
            con.commit();
            con.setAutoCommit(true);
            clob.close();
            pstmt.close();
            rs.close();
            stmt.close();
            con.close();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
编译不在报错


只看该作者    顶部
相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问