最近在做系统开发的时候需要想Oracle数据库插入超过4000字节的CLOB字段,在网上查询了N久才发现下面的解决方案,故留存以备后查。

我们可以通过创建单独的OracleCommand来进行指定的插入,即可获得成功,这里仅介绍插入clob类型的数据,blob与此类似,这里就不介绍了,下面介绍两种办法

在通过拼组sql语句来实现数据插入的应用中,我们很有可能会遇到需要插入大型数据的情况,例如,在oracle中需要插入字节数超过4000的字段内容时,我们如果通过简单的拼组sql语句来实现插入,显然就会出现问题,而在sql server中却没有这个限制,个人尝试了26w个字符的sql语句在sql server2005中执行,依旧可以插入数据,但是在oracle中插入超过4000个字符的内容则会报异常。

下面就此问题的解决办法,做一下小结: 
我们可以通过创建单独的OracleCommand来进行指定的插入,即可获得成功,这里仅介绍插入clob类型的数据,blob与此类似,这里就不介绍了,下面介绍两种办法,均已验证: 
第一种方法:使用组件System.Data.OracleClient的方法来实现,比较简单一些:

复制代码代码如下:
string conn = "Data Source=客户端指定连接字符串;User ID=user;Password=mima"; 
OracleConnection Con = new System.Data.OracleClient.OracleConnection(conn); 
Con.Open(); 
string cmdText = "INSERT INTO GWEXPOINTLIST(id, name, content) VALUES(1, ‘name', :clob)"; 
OracleCommand cmd = new OracleCommand(cmdText, Con); 
OracleParameter op = new OracleParameter("clob", OracleType.Clob); 
op.Value = "超过4000字符的超常字符串"; 
cmd.Parameters.Add(op); 
cmd.ExecuteNonQuery(); 
Con.Close();

第二种方法:使用组件Oracle.DataAccess的方法实现,可能用法稍微老了一些,但依然有效:

复制代码代码如下:
IDbCommand m_objCmd = new OracleCommand(); 
m_objCmd.CommandText = "INSERT INTO GWEXPOINTLIST(id, name, content) VALUES(1, ‘name', :clob)"; 
IDataParameterCollection m_arrParamter = m_objCmd.Parameters; 
OracleClob clob = new OracleClob((OracleConnection)m_objConn); 
OracleParameter objParam = new OracleParameter(‘clob', OracleDbType.Clob, clob, ParameterDirection.Input);

objParam.Value = "超过4000字符的超常字符串"; 
m_arrParamter.Insert(0, objParam);

int nRet = m_objCmd.ExecuteNonQuery();

当然,sql server同样也可以通过这样的方法来进行添加字符串,但是添加二进制文件的话,就只能用这种方式来添加了,因为需要读取文件的二进制流内容。

Oracle 插入超4000字节的CLOB字段的处理方法的更多相关文章

  1. oracle merge into函数中插入clob字段

    当使用Merge into 函数向ORACLE数据库中插入或更新数据时,报错“ORA-01461: 仅可以为插入 LONG 列的 LONG 值赋值”,使用如下方法可以把String转换为clob. 需 ...

  2. oracle 插入大于4000字符的 clob代码

    OracleConnection connection = new OracleConnection(conn); OracleCommand command = new OracleCommand( ...

  3. Oracle大字段(clob)模糊查询优化方法

    对于内容很多的时候clob打字段模糊查询很慢,整理一个小方法: 1,在查询的列上建索引 2,对于要查询的clob字段使用一下语句创建索引   CREATE INDEX idx_zs_info_note ...

  4. java 将长度很长的字符串(巨大字符串超过4000字节)插入oracle的clob字段时会报错的解决方案

    直接很长的字符串插入到clob字段中会报字符过长的异常,相信大家都会碰到这种情况 String sql = "insert into table(request_id,table_name, ...

  5. 解决比较Oracle中CLOB字段问题

    解决比较Oracle中CLOB字段问题   Oracle中CLOB和BLOB字段虽说在开发中满足了存放超大内容的要求,但是在一些简单使用中确频频带来麻烦.CLOB中存放的是指针,并不能直接取到实际值. ...

  6. 对oracle里面clob字段里面xml的增删改查学习

    这段时间,我使用系统表里面有clob字段里面存放的xml信息,我们如何对xml进行增删改查操作呢,自己参考了很多也学到很多,给大家分享一下 首先我们先建测试表 CREATE TABLE EFGP_23 ...

  7. java 存储oracle的clob字段

    项目中有很长的字符创需要存储,用到了oracle的clob字段,直接很长的字符串插入到clob字段中会报字符过长的异常,于是便寻求解决方案.看到这个博客写的还不错 首先,创建一个含CLOB字段的表: ...

  8. oracle中clob字段的使用

    oracle中定义了一个字段是clob的,由于用的是ssh的框架,结果在面向对象存取的时候出现clob类型字段和String类型字段的转换问题.开始查阅了clob字段和String字段的相互转换的方法 ...

  9. Oracle中如何查询CLOB字段类型的内容

    注:本文来源于:<Oracle中如何查询CLOB字段类型的内容> 语法 select * from table_name where dbms_lob.instr(字段名(clod类型), ...

随机推荐

  1. AndroidStudio字体主题样式分享

    最近慢慢在从eclipse往AndroidStudio习惯,但总觉得AS的默认字体颜色看的不舒服,便花了些时间将字体颜色样式改成了和原来类似的.以下是效果图. 这里是下载地址http://downlo ...

  2. Cisco AnyConnect “Failed to initialize connection subsystem”的解决方案

    Per Cisco: Microsoft has released a fix-it patch providing a workaround for this issue. See KB# 3023 ...

  3. JS获取页面上所有input

    for (var i = 0; i < document.getElementsByTagName("input").length; i++) { if (document. ...

  4. NUnit + VS2010 简单入门

    一.环境准备 1. NUnit 2.6.3 下载地址:https://launchpadlibrarian.net/153448476/NUnit-2.6.3.msi 2. VS2010 二.安装 N ...

  5. HDU 1429 胜利大逃亡(续)(DP + 状态压缩)

    胜利大逃亡(续) Problem Description Ignatius再次被魔王抓走了(搞不懂他咋这么讨魔王喜欢)…… 这次魔王汲取了上次的教训,把Ignatius关在一个n*m的地牢里,并在地牢 ...

  6. 【原创】CMD常用命令:解决实际问题

    1.查找某一目录下后缀名文某某的所有文件. 命令格式:dir *.mp3 /a -d/b/s >C:\Users\leemo\Desktop\total.txt MP3为文件后缀名.>是命 ...

  7. js设计模式--鸭子类型

    1.简介 JavaScript没有提供传统面向对象语言的类式继承通过原型委托的形式实现对象与对象之间的继承没有对抽象类和接口的支持 编程语言按数据类型可分为静态类型语言和动态类型语言 变量的类型要到程 ...

  8. Faces.JavaServer Pages(JSP)

    zhengly.cn atitit.Servlet2.5 Servlet 3.0 新特性 jsp2.0 jsp2.1 jsp2.2新特性 1.1. Servlet和JSP规范版本对应关系:1 1.2. ...

  9. php中的NOTICE 的错误解决方法

    PHP新手NOTICE错误,特此写给那些遇到和我一样错误的朋友.   刚学习PHP,不久 最近在整留言板,刚才遇到个问题. 页面中,好多类似 Notice: in D:\wamp\www\study\ ...

  10. python基础之元组(Tuple)、字典(Dictionary)详解

    元组定义 元组是另一个数据类型,类似于List(列表). 元组用”()”标识.内部元素用逗号隔开.但是元素不能二次赋值,相当于只读列表. 举例: tuple = ( ‘abcd’, 786 , 2.2 ...