如何在SDE表格中写入二进制bolb数据

    技术2022-05-11  79

    如何在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

    这样就可以了。 


    最新回复(0)