2010-03-11 30 views
7

我在尝试将文件插入到SQL Server数据库时遇到困难。我会尝试是最好的,我可以打破下来:如何使用SQL Server存储和检索图像(服务器管理工​​作室)

  1. ,我应该使用什么数据类型来存储图像文件(JPEG/PNG/GIF /等)?现在我的表格使用的是image数据类型,但我很好奇会是更好的选择。

  2. 我该如何将图像插入数据库? Microsoft SQL Server Management Studio是否有任何允许将文件插入表的内置函数?如果是这样,那是怎么做的?另外,如何通过使用带有PHP的HTML表单处理输入数据并将其放入表中来完成这项工作?

  3. 我该如何从表格中获取图像并将其显示在页面上?我明白如何选择单元格的内容,但我会如何将其转换为图片。我必须有一个标题(内容类型:图像/ JPEG)?

我没有问题,在做这些事情的MySQL,但SQL Server环境仍然是新的给我,和我的工作我的工作的一个项目,需要使用存储过程来攫取各种数据。

任何和所有的帮助表示赞赏。

回答

5

image类型已弃用,所以请勿使用它。

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

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

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

+0

我们使用的是SQL Server 2008,但在下拉列表中似乎没有'FILESTREAM'类型。如果'varbinary'起作用,那就必须这样做。主要关心的是想办法将图像插入到表格中。感谢您注意图片类型已被弃用,因为我倾向于该路线。:) – 2010-03-11 19:09:16

+0

@Joe Majewski:FILESTREAM适用于SQL Server 2008的所有版本。当您有FILESTREAM时,请不要**使用'varbinary'。您不一定会在下拉列表中看到它 - 请参阅此处的入门指南:http://msdn.microsoft.com/en-us/library/bb933995.aspx – Aaronaught 2010-03-11 19:11:00

+0

好吧,我正在研究这个权利现在。由于我没有权限访问所有数据,因此我意识到我正在处理“真实”数据库的副本,所以我希望在启用文件流数据库时不会导致出现问题。 – 2010-03-11 19:22:53

0

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

+0

哦,我真的很喜欢这个工具的工作方式,但它不完全是我需要的。基本上,我正在为北伊利诺伊大学申请一张储存住在宿舍里的每个学生的照片。当学生试图在前台办理登机手续时,工作人员可以通过确认图片是否匹配来确定他们实际上是学生。 我不打算在数据库中插入任何这些图片。我只需要能够成功插入单个图像用于测试目的,以确保我可以正确地检索它。 – 2010-03-11 19:16:47

+0

是否有一个只能在硬盘上使用单一路径的插入? – 2010-03-11 19:17:05

相关问题