【问题标题】:Opening attachment stored in MS Access using C#使用 C# 打开存储在 MS Access 中的附件
【发布时间】:2015-02-17 19:59:07
【问题描述】:

我的表中有一个列作为 Attachment 数据类型存储在 MS Access 中。它存储各种文件,如 docx、pdf 等。

我正在尝试使用 documentViewer(从 XtremeDocumentStudio .NET 获得)显示表格中的文件。

我的表单上还有一个包含员工 ID 列表的组合框。当从组合框中选择特定 ID 时,我希望与该员工关联的附件显示在 documentViewer 中。

我正在使用这个查询:

SELECT EmployeeAttachment FROM Employee WHERE EmployeeID = 2

我已经被这个问题困扰了一段时间,不知道如何实现它。任何关于我将如何做到这一点的帮助或想法将不胜感激。

【问题讨论】:

  • 你能澄清一下吗?究竟是什么问题...无法选择数据,无法显示...什么?
  • 我可以选择特定的附件,如我提供的查询中所示。但它在documentViewer中的显示我不知道该怎么做。
  • 我不熟悉 XtremeDocumentStudio。我假设您有一个查看器控件的实例,对吗?如果是这样,它想从你这里得到什么? Byte[]? Image?也许您可以展示与该想法相关的 sn-p。
  • 是的,我有一个查看器控件的实例。我假设本文档中描述的字节:gnostice.com/… 该文档似乎是一个紧密的解决方案,但我似乎无法理解它如何适合我的应用程序,因为我有 documentViewer 而不是 PDFviewer。跨度>
  • 看起来你的控件应该有一个 LoadDocument() 方法,就像 PDF 一样。并且String(完整路径)和Byte[](如您提供的链接中所示)可能会重载。使用 Gord 的答案,您应该能够利用前者。否则,这个例子似乎很恰当。

标签: c# sql winforms ms-access documentviewer


【解决方案1】:

为了从 Access 数据库的附件字段中获取文件的忠实副本,您需要使用 ACE DAO Field2 对象的 .SaveToFile 方法。详情见相关问题:

Extracting files from an Attachment field in an Access database

一旦您将文件解压到磁盘(例如,到System.IO.Path.GetTempPath),您就可以告诉查看器控件在哪里找到它。

【讨论】:

  • 感谢您的评论。如果我尝试将文件存储在 phpMyAdmin 的数据库中,我还需要将文件提取到磁盘吗?还是可以直接从数据库中读取文件?
  • 如果您要将附件文件数据作为 BLOB 列类型之一存储在 MySQL 中,那么您可以从数据库中检索文件,而无需先将其保存到磁盘。如果您要将附件文件数据作为原始二进制数据存储在 BLOB 字段的 Access 等效项中,情况也是如此,该字段是(不幸地命名为)OLE Object 字段类型。首先将文件保存到磁盘的要求是因为它位于Attachment 字段中,这为Access 应用程序提供了某些优势(相关答案here 中的详细信息)。
  • 啊,好的,谢谢。我想我会继续尝试将文件存储为附件字段并首先检索文件,然后继续尝试将文件存储在 phpMyAdmin 中。我会让你知道我是怎么过的。谢谢你的帮助。菲尔
  • 嗨,戈德,我决定将我的文件存储在 MySQL 数据库中,而不是 Access 中。关于如何从数据库中检索 BLOB 文件并将其显示在 documentViewer 中,您有任何指导吗?
  • “您对我如何从 [MySQL] 数据库中检索 BLOB 文件并在 documentViewer 中显示它有任何指导吗?” - 尽力而为,如果您遇到困难然后ask a new question按照How to Ask的指导方针,我们会尽力帮助你。
猜你喜欢
  • 1970-01-01
  • 2023-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多