java 插入oracle clob字段问题

问题描述

使用此方法不能更新clob字段的值,每次更新stmt.executeUpdate();//执行SQL,获得的执行条数为0,因此每次插入都是empty_clob(),也不报错误或者异常,哪位大侠有遇到类似情况的吗//--------------clob字段测试方法---------------////修改content的值,插入CLOB字段(网上代码)publicvoidupdateClob(Connectionconn,Stringseqcode,Stringcontent)throwsException{//-----strat:为存储过程建立数据库连接-----//Pub_DatabaseChoicepub_DatabaseChoice=newPub_DatabaseChoice();Stringconnstr=pub_DatabaseChoice.getConnStr();Stringuser=pub_DatabaseChoice.getUser();Stringpasswd=pub_DatabaseChoice.getPassword();//Class.forName("oracle.jdbc.driver.OracleDriver");//conn=DriverManager.getConnection(connstr,user,passwd);Propertiesprops=newProperties();props.put("user",user);props.put("password",passwd);props.put("SetBigStringTryClob","true");DriverManager.registerDriver(newOracleDriver());conn=DriverManager.getConnection(connstr,props);//-----end:为存储过程建立数据库连接-----//Stringsql="update"+tableName+"setcontent=?whereseqcode="+seqcode;//Statementpstmt=null;PreparedStatementstmt=null;booleandefaultCommit=conn.getAutoCommit();conn.setAutoCommit(false);try{//oracle.sql.CLOBnewClob=oracle.sql.CLOB.createTemporary(conn,false,oracle.sql.CLOB.DURATION_CALL);//newClob.setString(1,content);//java.sql.Clobc=newjavax.sql.rowset.serial.SerialClob("abc".toCharArray());//用于jdk5.0//CLOBClob=oracle.sql.CLOB.empty_lob();//Clob.setString(1,content);//执行SQL有两种方式PreparedStatement对象和Statement对象,本人使用PreparedStatement对象stmt=conn.prepareStatement(sql);//加载SQL语句//由于PreparedStatement支持SQL带有问号“?”可以动态替换?的内容。以下是替换?的方法//替换?的方法“1”代表第一为“?”(参数的设置是从1开始的,不是0开始)//正常的插入方式intlen=content.length();System.out.println("len:"+len);////创建并实例化一个CLOB对象CLOBclob=oracle.sql.CLOB.createTemporary(conn,false,1);////对CLOB对象赋值clob.putString(1,content);stmt.setClob(1,clob);//ReaderclobReader=newStringReader(content);//将content转成流形式//stmt.setCharacterStream(1,clobReader,len);//stmt.setClob(1,newClob);intnum=stmt.executeUpdate();//执行SQLif(num>0){System.out.println("ok");conn.commit();}else{System.out.println("NO");}}catch(Exceptione){e.printStackTrace();}conn.setAutoCommit(defaultCommit);}

解决方案

解决方案二:
我记得oracle8中要先insert一个empty_clob(),然后update掉该字段才行

时间: 2024-09-27 19:13:13

java 插入oracle clob字段问题的相关文章

mybatis 向oracle 采用foearch批量插入,如果包含clob字段报错

问题描述 mybatis 向oracle 采用foearch批量插入,如果包含clob字段报错 mybatis 向oracle 采用foearch批量插入 如下代码: insert into (id,name,clobs) SELECT #{item.id},#{item.name},#{item.clobs} FROM DUAL 报错信息:仅能绑定要插入 LONG 列的 LONG 值 可是如果采用普通的insert into (id,name,clobs) values(#{id},#{nam

解析jdbc处理oracle的clob字段的详解_oracle

import java.io.BufferedOutputStream;import java.io.ByteArrayInputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.io.Reader;import java.sql.Clob;import java.sql.Connection;import java.sql.ResultSet;

oracle数据库中如何处理clob字段方法介绍_oracle

在知识库的建立的时候,用普通VARCHAR2存放文章是显然不够的,只有区区4000的字节,放不了多少字, 而CLOB数据类型,则能最多存放8G的数据.但是这个字段处理起来有比较多的特殊性,记录一下. 插入: 直接写在SQL里面是不行的,一来SQL脚本有字符数限制,而来文章内容包含许多特殊字符,如换行,引号, 之类的东西,很麻烦.网上流行通用做法是先插入一个空CLOB字段,用empty_clob()方法来创建空字段,如: 复制代码 代码如下: INSERT INTO T_TOPIC(TOPIC_I

mybatis 批量插入Oracle时,当插入clob类型时报错

问题描述 mybatis 批量插入Oracle时,当插入clob类型时报错 mybatis 批量插入时,当插入clob类型时报错,ORA-01461:仅能绑定要插入LONG列的LONG值.请问怎么解决. po中是字段suo是String类型. 解决方案

lob乱码-java 读取CLob字段乱码

问题描述 java 读取CLob字段乱码 fps = new FileOutputStream(file); osw = new OutputStreamWriter(fps,"UTF-8"); bw = new BufferedWriter(osw); Clob content = qrs.getClob(3); String line=content.getSubString((long)1,(int)content.length()); log.info("shell:

clob-请问PHP如何读取Oracle数据库中的CLOB字段?

问题描述 请问PHP如何读取Oracle数据库中的CLOB字段? 请问PHP如何读取Oracle数据库中的CLOB字段?数据库中CLOB字段中是文本内容. 试了N多次,都没用,还望各位大神不吝赐教,感谢!

asp.net调用存储过程往oracle写clob字段?急死了,弄两天了。。

问题描述 asp.net调用存储过程往oracle写clob字段?急死了,弄两天了..在页面上有一个FCK编辑器可以取VALUE值,然后我把他转化成string类型,调用存储过程来往oracle的clob字段插数据,可是value值大的时候,当然没超过1M,提示转换错误,为什么呢?难道这里的clob不能调用存储过程来写?谁有好的办法,马上结帖!!! 解决方案 解决方案二:在网上找的都是直接insert语句,难道不能调用存储过程吗,我的insert语句是在存储过程里,怎么调用存储过程来写clob字

急求指导!java连接oracle数据库自主插入数据问题

问题描述 我是想用java连结oracle,在eclipse中执行程序,实现用户自主插入数据.代码如下:packageorg.lxh.execdemo;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.Statement;publicclassInsertDemo{//在classpath中配置的jdbc的jar的包publicstaticfinalStringDBDRIVER="oracle.jdbc.d

java实现oracle插入当前时间的方法_java

本文实例讲述了java实现oracle插入当前时间的方法.分享给大家供大家参考.具体分析如下: 我在做一个inser操作的时候 要获取当前时间 存入数据库 就直接 ps.setDate(new java.util.Date()); 但是会报转换错误 此时应该 java.util.Date utilDate = new java.util.Date(); java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime()); ps.setDat