ArcEngine对Blob字段赋值的方法
2015-10-07 08:36
288 查看
今天在测试数据入库程序,发现对某个图层操作之后,调用StopOperation,会出现“尝试写入或读取受保护的内存”错误。
经过测试,最终发现是因为该图层包含有Blob字段,而代码没有专门对Blob字段进行处理。
解决办法:
1、需要判断字段类型,如果是Blob类型,调用下面辅助方法获取Blob值:
IMemoryBlobStreamVariant varBlobStream = objFieldValue as IMemoryBlobStreamVariant;
if (varBlobStream == null) return null;
object objValue;
varBlobStream.ExportToVariant(out objValue);
byte[] bytesArray = objValue as byte[];
2、然后调用下面方法赋值:
IMemoryBlobStream pMBS = new MemoryBlobStreamClass();
IMemoryBlobStreamVariant varBlobStream = (IMemoryBlobStreamVariant)pMBS;
object objValue = bytesArray;
varBlobStream.ImportFromVariant(objValue);
pFeature.set_Value(posField, varBlobStream);
来自:http://www.cnblogs.com/ITGIS/archive/2013/01/12/2857758.html
经过测试,最终发现是因为该图层包含有Blob字段,而代码没有专门对Blob字段进行处理。
解决办法:
1、需要判断字段类型,如果是Blob类型,调用下面辅助方法获取Blob值:
IMemoryBlobStreamVariant varBlobStream = objFieldValue as IMemoryBlobStreamVariant;
if (varBlobStream == null) return null;
object objValue;
varBlobStream.ExportToVariant(out objValue);
byte[] bytesArray = objValue as byte[];
2、然后调用下面方法赋值:
IMemoryBlobStream pMBS = new MemoryBlobStreamClass();
IMemoryBlobStreamVariant varBlobStream = (IMemoryBlobStreamVariant)pMBS;
object objValue = bytesArray;
varBlobStream.ImportFromVariant(objValue);
pFeature.set_Value(posField, varBlobStream);
来自:http://www.cnblogs.com/ITGIS/archive/2013/01/12/2857758.html
相关文章推荐
- *LeetCode-Edit Distance
- Java笔记---网络编程
- IIS Excel操作问题解决 Retrieving the COM class factory for component with CLSID {00024500-0000-000
- [转]两位国母的不同人生
- diy文件系统上创建文件的流程
- 什么是公有云、私有云和混合云?
- [转]String.Replace 和 String.ReplaceAll 的区别
- SQL Tuning Advisor一个错误ORA-00600: internal error code, arguments: [kesqsMakeBindValue:obj]
- Qt 下载地址和从Qt4到Qt5
- UNIX硬链接,软链接(符号链接),文件复制
- 悉数美剧《黑客军团》中的黑客工具
- Java基础知识强化之集合框架笔记48:产生10个1~20之间的随机数(要求:随机数不能重复) 简洁版
- 如何开博客
- 概览J2EE
- easyUI draggable组件使用
- mac osx 启动wireshark闪退
- LeetCode Algorithms #258 <Add Digits>
- 【转】图文详解YUV420数据格式
- Leetcode NO.45 Jump Game II
- 用for循环打印菱形