2009-08-28 97 views
1

我有这样的:将图像保存到SQL Server 2008?

Create Proc CrearNuevoImagen 
    @imagen image  
AS 

INSERT INTO 
    Imagenes(imagen) 

VALUES(
    @imagen 
    ) 

我看到@imagen的类型是 '形象' 的。

我的问题是保存在我的前端(我的asp.net网站代码)上有一个.jpg图像,如何将.jpg图像转换为适合'图像'类型的列?或者SQL Server自动为我做这件事?

+1

感叹。你知道人们根据标签过滤问题吗?通过使用好的标签,您的问题会突出显示或显示在rss feed中,供可能知道如何回答它们的人使用? – 2009-08-28 16:32:32

+2

不要再使用“IMAGE” - 对于SQL Server 2005及更新的版本,请改为使用VARBINARY(MAX)。 IMAGE将很快从SQL Server中删除 – 2009-08-28 18:36:56

+0

@marc_s:也很好的解决。 ;) – NotMe 2009-10-27 21:36:07

回答

4

将图像对象保存到MemoryStream中。然后,您可以将字节数组从内存流中取出并传递给SQL Server,以将其保存到“image”或“varbinary”列中。

+0

因此,我所要做的就是将“图像”转换为“字节数组”,SQL将接受到“图像”类列? – 2009-08-28 16:13:33

+1

是的,您将使用GetBytes()方法使用SqlDataReader读取数据。 – David 2009-08-28 16:21:07

1

图像类型仅仅是可以存储一个字节数组类型的名字。现在已被弃用,您应该使用VARBINARY(MAX)类型。由于需要避免将这些相对较大的文件复制到内存中,因此如果您关心性能,则将JPG文件保存到后端数据库实际上会更复杂一些。查看Download and Upload images from SQL Server via ASP.Net MVC,了解存储在SQL Server BLOB字段中的图像文件的高效流式传输示例。

+0

对于IMAGE类型的+1现已被弃用,将在http://msdn.microsoft.com/zh-cn/library/ms187993.aspx的“未来版本的Microsoft SQL Server”中删除“图像数据类型” – Habib 2013-05-02 05:38:31

相关问题