c – 使用ADO处理MS Access中的附件类型字段
作者:互联网
我的数据库中有一些字段需要存储图像(位图,JPG或PNG)和PDF(或Excel / RTF / TXT)文件.通过Internet浏览,我了解到MS Access 2007(和更新版本)有一个类型为Attachment的字段,可以满足我的需求.
但是,我使用ADO通过GUI(用C和WinAPI制作)填充数据库.我无法找到使用ADO在数据库中插入/加载此类数据的示例.在这里搜索一些类似的问题(VB,Delphi,Python ……)我发现我的方法可能不是最好的,但似乎可以做到.
缺乏经验,因为这是我第一次处理这类任务,我要求社区帮助我解决这个问题.因此我的问题是:
>我应该如何处理使用ADO在MS Access 2007(或更高版本)数据库中插入/加载此类数据(图像,文档…)?
您是否可以提供小代码片段,说明使用ADO将此类数据插入/插入数据库?
谢谢.
解决方法:
如果您计划仅将C应用程序用作前端,并且不希望用户在Access中打开数据库,那么我建议您避免使用“附件”字段类型.而是使用名为[Attachments]的单独子表,在[Attachments]表和父表(您正在考虑使用Attachment字段的位置)之间使用一对多关系(外键约束).然后,将文档作为原始二进制数据保存在子表中的OLE对象(长二进制)字段中.
Attachment字段类型为使用Access UI的应用程序提供了几个优点.支持单个数据库记录的多个附件可以像将附件控件放到Access表单上一样简单.也可以从数据表视图访问附件,尽管你看到的只有一个“回形针”图标.
附件字段可以从代码中操作,但只能使用ACE DAO Recordset2对象(例如here).为了能够为每个记录保存多个附件,Access数据库引擎使用隐藏的子表.可以使用“magic”字段名称限定符(例如,Field1.FileName)将一些信息提取到SELECT查询中,但ADO和ODBC都不能INSERT或UPDATE Attachment字段条目.
由于您不会将Access UI用于您的应用程序
>您将无法使用附件字段提供的许多优势,以及
>你仍然可以通过你的C应用程序通过ACE DAO操纵附件字段,但这将是一个麻烦.
不使用“附件”字段可能会遗漏的一个(可能)显着优点是,Access数据库引擎会自动压缩“附件”字段中的文件,但“OLE对象”字段中的原始二进制数据将以未压缩的形式存储.如果您要保存的文件无论如何都是压缩格式(例如,JPEG,.docx,.xlsx),那么这不是问题.但是,如果您计划以未压缩格式(例如.txt,.rtf)存储大量大型文档,那么文件膨胀可能是个问题.在这种情况下,您可以让C应用程序在保存之前自动压缩这些文档(可能使用GZipStream)并在检索时解压缩它们.
标签:c,winapi,ms-access-2007,ado,attachment-field 来源: https://codeday.me/bug/20190830/1767363.html