VerySource

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

关于往Oracle数据库中插入Clob类型数据问题!如何将String类型数据转换成Clob类型?

[复制链接]

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-2-23 07:30:02 | 显示全部楼层 |阅读模式
问题如下一段程序:
  public int insertForm() {
        String strsql = "";
        String strtime = "";
        try {
            Connection conn = db.getConnection();
            strtime = db.getCurrentDate("yyyy-MM-dd HH:mm:ss");
            strsql ="insert into productor(cpmc,bbh,cpgn,lbid,moreinfo)values(?,?,?,?,?)";//其中cpgn和moreinfo在数据库中是Clob型字段

            PreparedStatement pstmt = conn.prepareStatement(strsql);
            pstmt.setString(1, form.getCpmc());
            pstmt.setString(2, form.getBbh());

             oracle.sql.CLOB clob1=oracle.sql.CLOB.createTemporary(conn,false,oracle.sql.CLOB.DURATION_CALL);
             clob1.putString(1,form.getContent());//将form.getContent()(其值为String类型)转换成CLOB型插入数据库
             pstmt.setClob(3, clob1);
             pstmt.setInt(4, Integer.parseInt(form.getCplx()));
            
            oracle.sql.CLOB clob2=oracle.sql.CLOB.createTemporary(conn,false,oracle.sql.CLOB.DURATION_CALL);
             clob2.putString(1,form.getXxxx());//将form.getXxxx()(其值为String类型)转换成CLOB型插入数据库
            pstmt.setClob(5, clob2);
            pstmt.executeUpdate();
            conn.commit();
            pstmt.close();
            db.close();
        } catch (Exception e) {
            db.rollback();
            e.printStackTrace();
            return 2;
         e.printStackTrace();       
        } finally {
            db.close();
        }
        return 0;
    }

程序运行时出现错误!java.sql.SQLException: 无法从套接字读取更多的数据
不知道是那里不对头!请高手看看程序那里有问题!速度。。。。
回复

使用道具 举报

0

主题

11

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-5-7 14:00:01 | 显示全部楼层
把你的代码改成下面的:
//创建并实例化一个CLOB对象
CLOB clob = new CLOB((OracleConnection)con);
clob = oracle.sql.CLOB.createTemporary((OracleConnection)con,true,1);
//对CLOB对象赋值
clob.putString(1,form.getContent());
OracleConnection OCon = (OracleConnection)con;
OraclePreparedStatement pstmt = (OraclePreparedStatement)OCon.prepareCall(strSql);

//这一条,看到了吗,关键,setCLOB
pstmt.setClob(2, clob );

回复

使用道具 举报

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-5-13 22:45:01 | 显示全部楼层
麻烦你帮我把我的程序改好!帖上来我看看!不太懂你的意图!
回复

使用道具 举报

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

本版积分规则

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

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