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