ArcEngine将对象存储到Blob字段中!
在Geodatabase中有一张Table,希望通过AE开发的方式将信息存储到表的一个Blob字段中。这个该如何实现?
1 IWorkspaceName pWpsName = null; //当前工作空间名称
2 pWpsName= GWorkSapce.CreateAccessWorkSpace();
3 if (pWpsName==null)
4 {
5 return;
6 }
7 m_WorkspacePath = pWpsName.PathName;
8 IWorkspaceFactory pWspFactory = pWpsName.WorkspaceFactory;
9 IWorkspace pWsp = pWspFactory.OpenFromFile(m_WorkspacePath, 0);
10 IFeatureWorkspace pFeatWsp = pWsp as IFeatureWorkspace;
11
12 IFieldInfo m_fieldOID=new OIDField();
13
14 IFieldInfo m_field1=new TableField();
15 m_field1.Name_2="Item";
16 m_field1.AliasName_2="Item";
17 m_field1.Type_2=esriFieldType.esriFieldTypeString;
18 m_field1.Length_2 = 64;
19
20 IFieldInfo m_field2 = new TableField();
21 m_field2.Name_2 = "Value_1";
22 m_field2.AliasName_2 = "Value_1";
23 m_field2.Type_2 = esriFieldType.esriFieldTypeBlob;
24
25 IList<IFieldInfo> listField = new List<IFieldInfo>();
26 listField.Add(m_fieldOID);
27 listField.Add(m_field1);
28 listField.Add(m_field2);
29 GFieldsInfo gFieldsInfo=new GFieldsInfo(listField);
30
31 IFields m_fields=gFieldsInfo.CreateFieldsForTable();
32
33 IObjectClass m_InfoObj=GWorkSapce.CreateObjectClass(pWsp, "Info", m_fields);
34 IRow row1=((ITable)m_InfoObj).CreateRow();
35 var Itemindex = m_InfoObj.Fields.FindField("Item");
36 row1.set_Value(Itemindex, "空间参考");
37 byte[] byteArray = {1, 2, 3};
38 MemoryBlobStream blob = new MemoryBlobStream();
39 ((IMemoryBlobStreamVariant)blob).ImportFromVariant(byteArray as object);//将一个Byte[]对象作为参数传入
40 var index = m_InfoObj.Fields.FindField("Value_1");
41 IField field = m_InfoObj.Fields.get_Field(index);
42 if (field.CheckValue(blob))
43 {
44 row1.set_Value(index, blob);
45 }
46 row1.Store();
47 IRow test = ((ITable)m_InfoObj).GetRow(1);
48 object objtest=test.get_Value(2);
49 IMemoryBlobStreamVariant pVar = objtest as IMemoryBlobStreamVariant;
50 object pobj = new object();
51 pVar.ExportToVariant(out pobj); //转入Object对象
52 MessageBox.Show(((byte[])pobj)[1].ToString());
在ArcCatalog中查看:
参考文献:
1.http://pastebin.com/fd3EW6uj
作者:太一吾鱼水
文章未经说明均属原创,学习笔记可能有大段的引用,一般会注明参考文献。
欢迎大家留言交流,转载请注明出处。
分类:
ArcGIS Engine
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律