如何在SDE表格中写入二进制bolb数据
http://blog.csdn.net/wuhuiran
吴会然(wuhran@126.com)目前的项目要求把 一个文件保存在SDE表格的BOLB字段,初学AE,不懂啊
经过研究和请教高人,终于解决了该问题
两种方法可以解决。
1,使用ADO操作表格。这个网上有很多写二进制的例子,我就不多说了。
在编译过程中你可能会遇到很多命名冲突,ADO和AE有很有命名时相同的。我已经解决了,你可以参考我的方法。
还是有两种方法:
(1)改ADO名字#import "f:/Program Files/Common Files/System/ADO/msado15.dll" rename("EOF","adoEOF"), rename("BOF","adoBOF"),rename("EOS","adoEOS"),rename("Fields", "adoFields"),rename("EditModeEnum","adoEditModeEnum")
可能不需要改这么多,我多写你个,给大家个参考而已
(2)不用改名字。指定ADO命名空间。在ADO对象前加上ADODB,如ADODB::_RecordsetPtr
2,使用AO方法同样可以写入BOLB数据到表格,SDE表格提供有BOLB的字段类型,当然也会提供写入方法。不过我是请教了高人才知道的。代码如下。
IMemoryBlobStreamPtr ipMemoryBlobStream(CLSID_MemoryBlobStream);ipMemoryBlobStream->LoadFromFile(_bstr_t("C://Documents and Settings//zwf//桌面//temp.txt"));
IRowPtr ipRow;ipTable->CreateRow(&ipRow);VARIANT var;VariantInit(&var);var.vt = VT_UNKNOWN;var.punkVal=ipMemoryBlobStream;ipRow->put_Value(1,var);
ipRow->Store();
写入成功,但是有一个问题的。那就是,SDE默认的BOLB字段大小是1000000Byte,1M而已,太小了
我们需要修改。修改方法如下。在cmd命令提示窗口输入:sdemon -o info -I config输出参数看看Max . in Memory Blob Size的值,默认的是Max. in Memory BLOB Size 1000000 Bytes
使用如下命令修改:sdeconfig -o alter -v BLOBMEM=自己定义一个合适的大小 -u sde -p sde
这样就可以了。