ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

c – 使用ADO处理MS Access中的附件类型字段

2019-08-30 10:06:08  阅读:327  来源: 互联网

标签:c winapi ms-access-2007 ado attachment-field


我的数据库中有一些字段需要存储图像(位图,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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有