如何使用SQL Server存储和检索图像(Server Management Studio)

时间:2010-03-11 18:49:56

标签: php sql sql-server image

尝试将文件插入SQL Server数据库时遇到困难。我会试着尽可能地打破这个:

  1. 我应该使用哪种数据类型来存储图像文件(jpeg / png / gif / etc)?现在我的表格使用image数据类型,但我很好奇varbinary是否是更好的选择。

  2. 如何将图像插入数据库? Microsoft SQL Server Management Studio是否具有允许将文件插入表中的任何内置函数?如果是这样,那怎么办?另外,如何通过使用PHP表单来处理输入数据并将其放入表格中来实现这一目标呢?

  3. 如何从表中获取图像并将其显示在页面上?我理解如何选择单元格的内容,但我将如何将其转换为图片。我是否必须有标题(内容类型:image / jpeg)?

  4. 使用MySQL做这些事情我没有问题,但SQL Server环境对我来说仍然是新的,我正在为我的工作开发一个项目,需要使用存储过程来获取各种数据。

    感谢任何和所有帮助。

2 个答案:

答案 0 :(得分:5)

不推荐使用image类型,因此请勿使用该类型。

简短的回答是,如果这是SQL 2008,则使用FILESTREAM类型;如果是2005或更早版本,则使用varbinary(max)

更好的答案是使用FILESTREAM类型(如果这是SQL 2008),而不是将数据存储在数据库中。数据库不是为这种类型的东西构建的,并且在那里抛出BLOB会严重损害性能。 FILESTREAM通过将实际数据存储在文件系统中来回避问题;其他一切都是不合标准的解决方案。

至于如果选择采用这种非理想的方法,如何读取和写入varbinary列,它将被表示为PHP中的流。这就是你从查询中得到的列值,我相信你必须把它作为一个参数。

答案 1 :(得分:0)

命令行bcp.exe可以接受批量插入工具。有关如何通过t-sql将二进制数据插入MS SQL的更多信息,请阅读this