代码之家  ›  专栏  ›  技术社区  ›  Jesse Taber

如何将文件(PDF)插入到varbinary SQL Server列中并在以后检索它?

  •  5
  • Jesse Taber  · 技术社区  · 16 年前

    我希望获取报告运行的结果(Crystal Reports中的PDF文件),对其进行序列化,将其粘贴到varbinary字段中,然后稍后能够对其进行反序列化并将其呈现给用户。

    这有什么陷阱吗?如果我知道本地机器上当前保存PDF文件的路径,那么实现这一点的基本语法是什么?

    2 回复  |  直到 16 年前
        1
  •  5
  •   GvS    16 年前

    编辑: MSDN documentation 那个 图像将被删除

    我以前的回答是: VARBINARY的限制为8KB。可能太小,无法存储PDF。您最好使用图像数据类型。

    使用参数通过SqlCommand插入/选择数据,您可以像任何普通字段一样使用普通SQL。

    编辑2:因为您使用的是C#,所以应该使用DataReader检索数据。要创建DataReader,请使用 SqlCommand.ExecuteReader

        2
  •  3
  •   peSHIr    14 年前

    byte[] 参数设置为 IDbCommand 完全如果你的PDF是100 Mb大呢?据我所知,在将结果发送到请求浏览器之前,这将从您的数据库(需要服务器上的内存量)获得所有这些100 Mb。现在,考虑一下为不同大小的PDF获取多个并发请求。。。每秒。。。这不是很容易扩展的。

    有关可能的解决方案,请查看 "Blob + Stream = BlobStream" BLOB Stream

    这篇文章是荷兰语的,但是 the example 与之配套的代码应该足以让您开始。此外,彼得·德容格似乎还写了一本 article on CodeProject image SQL Server中的列。这篇文章是用英语写的。