Oracle中Clob与Blob字段的读取
来源:互联网 发布:excel表格软件下载 编辑:程序博客网 时间:2024/04/29 17:09
Oracle中若以字符串的形式写入数据到Clob字段中,默认的长度为4000,最大可存储4G。 直接将字符串写入Clob字段中,则最大可写4000个字节;若要写入大的字符数据,可以将字符数据以二进制流的形式写入。写入Clob(Blob代码):OracleConnection conn = new OracleConnection(GetConfigUserConnectionString()); conn.Open(); OracleTransaction tran = conn.BeginTransaction(); string id = string.Empty; OracleCommand command = null; try { command = new OracleCommand(); command.Connection = conn; double scale = 0; if (ct.Scale.IndexOf(":") == -1) { scale = BasicOperate.GetDouble(ct.Scale, true); } else { scale = BasicOperate.GetDouble(ct.Scale.Substring(ct.Scale.IndexOf(":") + 1), true); }//在插入时先存一个空的empty_clob()[empty_blob()] command.CommandText = string.Format(@"insert into chart(chartname,charttype,source,scale,producttime," +"xml_definition) values('{0}','{1}','{2}',{3},'{4}',empty_clob()) " +"returning chartid into :rid", ct.ChartName, ct.ChartType, ct.Source, scale, ct.ProductTime, ct.xmlDefinition); command.Parameters.Add("rid", OracleDbType.Varchar2, 32).Direction = ParameterDirection.Output; command.ExecuteNonQuery(); id = command.Parameters["rid"].Value.ToString();//读入clob字段进行编辑 command.CommandText = string.Format("select xml_definition from chart where chartid='{0}' for update", id); using (OracleDataReader reader = command.ExecuteReader()) { while (reader.Read()) { OracleClob clob = reader.GetOracleClob(0);//读入二进制对性 clob.Erase();//清空其中的数据 clob.Position = 0; clob.BeginChunkWrite();//开始写入 int buffersize = 100; int retval = 0; byte[] bts = new byte[buffersize];//将字符串序列化为二进制流 MemoryStream stream = new MemoryStream(); BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(stream, ct.xmlDefinition);//将二进制流写入Clob字符中 stream.Seek(0, SeekOrigin.Begin); retval = stream.Read(bts, 0, buffersize); while (retval == buffersize) { clob.Write(bts, 0, buffersize); retval = stream.Read(bts, 0, buffersize); } clob.Write(bts, 0, 100); clob.EndChunkWrite();//结束写入 clob.Flush();//刷新 clob.Close();//关闭 } reader.Close(); } tran.Commit(); } catch (Exception ex) { tran.Rollback(); //throw new Exception(ex.Message); } finally { if (conn.State == ConnectionState.Open) { conn.Close(); } }读取Clob(blob)字段: 。。。 using (OracleDataReader reader = command.ExecuteReader()) { while (reader.Read()) { OracleClob clob = reader.GetOracleClob(0);//读取二进制字段 clob.Position = 0;//指向起点 byte[] tt = new byte[clob.Length]; clob.Read(tt, 0, (int)clob.Length);//将Clob读为二进制数据 MemoryStream ms = new MemoryStream(tt); BinaryFormatter bb = new BinaryFormatter(); object oo = bb.Deserialize(ms);//反序列化取出字符数据
}}
- Oracle中Clob与Blob字段的读取
- Oracle中Clob与Blob字段的读取
- Oracle中Clob与Blob字段的读取
- JAVA中读取ORACLE的CLOB字段
- Oracle中BLOB和CLOB字段的操作
- java读取oracle中Clob和Blob
- Oracle的clob,blob字段处理
- 关于 Oracle Clob Blob 字段的读写
- java 读取oracle的blob/clob
- dwr+oracle进行clob、blob字段插入、修改和读取
- oracle中Blob和Clob类型的区别与用法
- oracle 中CLOB与BLOB、BFILE
- ibatis操作oracle的clob字段和blob字段
- ibatis 读取blob字段 CLOB字段
- Oracle 11g中CLOB字段类型的数据读取
- oracle中的BLOB与CLOB字段更新时的行迁移与称链接
- java读取Oracle中Clob字段
- Oracle中Blob和Clob的作用
- VM8的虚拟机中检测USB设备功能禁止
- Oracle存储过程实例
- Director 介绍
- 网络七层协议
- jQuery学习《二》
- Oracle中Clob与Blob字段的读取
- OSI网络七层协议 及设备
- 可以做不同口味寿司的机器人
- Android requires compiler compliance level 5.0 or 6.0. Found '1.4' instead的解决办法
- Android属性系统
- Assembly Manifest详解
- (Mac)(Liunx)下配置svn服务器
- 2012腾讯实习笔试题
- 测试数据文件的删除