Oracle中Clob类型处理解析.docx_第1页
Oracle中Clob类型处理解析.docx_第2页
Oracle中Clob类型处理解析.docx_第3页
Oracle中Clob类型处理解析.docx_第4页
Oracle中Clob类型处理解析.docx_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Oracle中Clob类型处理解析2009-11-19 10:47:07作者:(414) 繁體中文字号:T|T 我要收藏或分享到: 导读Oracle中Clob类型处理解析最近利用NHibernate映射类型为Clob字段在插入数据时发现当字符的字节数(一个半角字符一个字节,一个全角字符两个字节)在 2000-4000之间时报错(ORA-01461:仅可以插入LONG列的LONG值赋值)。 Oracle中Clob类型处理解析最近利用NHibernate映射类型为Clob字段在插入数据时发现当字符的字节数(一个半角字符一个字节,一个全角字符两个字节)在 2000-4000之间时报错(ORA-01461:仅可以插入LONG列的LONG值赋值)。经过不断查找资料和自己的试验该问题终于得到解决,下边我将自己的心得给大家做一个分享。 准备系统环境 xp+.net2.0+oracle9i表结构(由于是测试,表结构随便建了一张) XX字段名类型IDVARCHAR2(70)TESTCLOB测试方式1:直接将CLOB的值拼写在SQL语句中。代码:string id = Guid.NewGuid().ToString();OracleCommand cmd = Conn.CreateCommand();cmd.CommandText = insert into xx(id,test) values( + id + , + data + );/ data是一个变量,存储你要插入的字符串cmd.ExecuteNonQuery();情况分析:当data的长度大于4000时报错(ORA-01704:文字字符串过长),小于或等于4000时正常插入。原因分析:之所以会出现长度大于4000时报错,是因为Oracle中有SQL语句中两个单引号之间的字符数不能大于4000的限制。 + data + data在sql语句之间,当data的值大于4000个字节时就会报错。解决办法:这种方式比较棘手,但有更好的方式,下边会讲到 。方式2:采用参数形式。代码:string id = Guid.NewGuid().ToString();OracleCommand cmd = Conn.CreateCommand();cmd.CommandText = insert into xx(id,test) values( + id + ,:p1);OracleParameter p1 = new OracleParameter(p1, OracleType.Clob);p1.Value = data; / data是一个变量,存储你要插入的字符串cmd.Parameters.Add(p1);cmd.ExecuteNonQuery();情况分析:采用这种方式能够正常插入。所以推荐用这种方式。原因分析:无解决办法:无方式3:采用参数形式,但是参数类型写为OracleType. NVarChar代码:string id = Guid.NewGuid().ToString();OracleCommand cmd = Conn.CreateCommand();cmd.CommandText = insert into xx(id,test) values( + id + ,:p1);OracleParameter p1 = new OracleParameter(p1, OracleType. NVarChar);p1.Value = data; / data是一个变量,存储你要插入的字符串cmd.Parameters.Add(p1);cmd.ExecuteNonQuery();情况分析: 为什么要写这种方式,因为这种方式和采用NHibernate的方式很相似,先看看在这种方式会产生什么情况。当data的字节数在0-2000之间时正常插入,大于4000时也正常插入,但在2000-4000时则失败,报错(ORA-01461:仅可以插入 LONG列的LONG值赋值)原因分析:没有采用对应的Oracle类型。解决办法:采用OracleType.Clob下边采用NHibernate插入数据,NHibernate具体怎用不在本次讨论范围。NHibernate采用的版本为000。下边大至把简要配置写下。App.configxx.csusing System;using System.Collections.Generic;using System.Text;namespace Test.EntiesSerializablepublic class Xxpublic Xx()private string id;public virtual string Idget return id; set id = value; 关注此文的读者还看过:2010-9-27 12:21:35 OpenWorld将至 Oracle偷偷更新Solaris 102010-3-31 11:08:00 Oracle学习查询操作的笔记以及语句2010-3-31 11:07:10 Oracle更新操作笔记以及语句2010-3-31 10:51:09 Oracle表管理以及约束笔记2010-3-25 17:10:50 Oracle 10G关于表操作常用语句详解及随想2010-3-9 17:43:26 如何用oracle多表创建的视图insert2010-3-9 17:40:54 教你修改Oracle数据库的连接数2009-12-15 17:07:13 Oracle to_char 函数详解 每日推荐 Android再拉警报:100款应用被植入扣费代码 百度浏览器评测:整合APP应用宣称无插件 栩栩如生!3Ds Max展现纸张的独特质感 Aussie Fruits 平面广告设计 Michael Lin罗技电子科技公司品牌设计 Grey Golds Gym 平面广告设计 阿根廷Gaby Herbstein环境公益广告设计 Olivier Guin 海报设计 Sean Heisler 标志设计(四) Sean Heisler 标志设计(三) 酷狗音乐2011 听力保护结合完美音效! 美图秀秀教你做美图之 打造温馨部屋效果精彩图文PS情侣浪漫怀旧色调PS沙漠中的仙境效果PS人物面上的裂纹PS漂亮MM彩绘效果美女手机壁纸某夜总会男女性游戏 文章排行 杨棋涵演绎贵妃出浴图 美腿美臀尽收眼底 苏紫紫形体艺术欣赏 苏紫紫身体的旅行 苏紫紫形体艺术欣赏 苏紫紫魅男杂志写真 比僵尸更恐怖的植物 植物大战僵尸 生活是需要创意的 创意广告海报欣赏 创意度极高!令人意想不到的拍照方法 PS有时候会露馅地 看广告中的PS错误组图 Photoshop制作流星划过夜空的动画 Photoshop教程详解照片美化润饰 Photoshop CS5初学者必读Alpha通道诚征赞助商 | 关于我们 | 广告投放 | 文章投稿 | 发布软件

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论