如果我将 PDF 文件保存到 Access 数据库的附件字段中,是否可以从数据库中获取该附件并在 WinForm 中查看它?或者可能是 WinForm WebBrowser?
还是我最好坚持数据库中的一个字段,告诉我所述文件的文件路径,以便我可以将我的 WebBrowser 导航到那个?
如果我将 PDF 文件保存到 Access 数据库的附件字段中,是否可以从数据库中获取该附件并在 WinForm 中查看它?或者可能是 WinForm WebBrowser?
还是我最好坚持数据库中的一个字段,告诉我所述文件的文件路径,以便我可以将我的 WebBrowser 导航到那个?
要从数据库中读取文件,您需要从数据库中读取字节并将它们写入新的 pdf 文件,然后将查看器指向该文件。要直接在 WinForm 上查看 pdf,您需要一个 3rd 方控件。如果您有一个可以在浏览器中查看 pdf 的插件,则 WinForm WebBrowser 将起作用。
从编码的角度来看,仅将路径存储在数据库中会减少麻烦,因为无论如何您都必须将查看器指向文件。数据库也有问题,所有附件丢失的可能性更高。另一方面,如果只存储路径,则需要确保这些路径始终可访问。
出于上述原因,我建议将它们存储在数据库之外,特别是如果这是一个更大的数据库。
早在 Access 2007 引入 Attachments 字段类型之前,我就一直在使用 Access,因此我有避免在数据库中嵌入图像和文档的历史。(他们倾向于使数据库显着膨胀,并且在尝试通过代码提取文件时,添加到文件中的 OLE“包装器”确实很麻烦。)
.SaveToFile
Access 2007+ 使附件字段变得相当简单,因为 DAO 已更新为支持.LoadFromFile
附件。此外,附件在保存到数据库时(显然)被压缩,这应该有助于解决膨胀问题。
所以,我想说选择权完全取决于您,因为如果您想在 WinForm 中查看(或预览或打开)PDF 附件,那么您可能最终会使用Microsoft.Office.Interop.Access.Dao
将附件保存为临时文件反正。因此,您用于预览/查看/打开附件的任何机制都将对文件起作用;它要么是
从数据库中提取的临时文件,或
您从数据库中的路径名或 URL 引用的文件系统中的持久文件。