如何将图像添加到SQL Server数据库?
问题描述:
我目前在Microsoft Visual Studio工作,我正在为学校做一个项目,在那里我必须制作一个应用程序,让您在电影院预订座位并查看您选择的电影的描述以及离开/阅读回顾。如何将图像添加到SQL Server数据库?
在我的应用程序中,我决定要包含图片(基本上是每个电影的海报);我制作了Movies
表格,并将idf
作为我的主要关键字。我在表格定义中添加了一个poster
列,我已将其类型设置为image
。
我的问题是,我如何分配一个特定的图像到电影,以便有权访问它,并能够稍后使用某种查询来显示它?
答
那么,首先poster
列的类型应该是VARBINARY(MAX)
。然后你可以使用下面的SELECT
得到的内容:
using (SqlCommand cmd = new SqlCommand("SELECT poster FROM Movies WHERE IDF = @id", connection))
{
cmd.Parameters.AddWithValue("@idf", <The movie ID>);
byte[] imageBytes = (byte[])cmd.ExecuteScalar();
// imageBytes is now either null or the bytes you stored in the column
}
同样为INSERT
或UPDATE
:
byte[] imageBytes = ...;
using (SqlCommand cmd = new SqlCommand("INSERT INTO Movies (..., Poster) VALUES (..., @poster)", connection))
{
// Other parameters
...
// imageBytes contains a byte array representing the image
cmd.Parameters.AddWithValue("@poster", imageBytes);
cmd.ExecuteNonQuery();
}
我建议你存储原始PNG/JPEG文件的字节。首先他们已经被压缩,其次你可以很容易地使用MemoryStream
来恢复图像(搜索如何做到这一点)。
答
insert into Movies(poster)
SELECT BulkColumn
FROM Openrowset(Bulk 'image..Path..here', Single_Blob) as img.
BulkColumn是语法。
将图像添加到数据库不是一个好主意。只需将文件名或路径添加到文件 –
@Ashkan Mobayen Khiabani这是一个错误的概括。有些情况下,将图像存储在数据库中是有意义的。请参阅http://stackoverflow.com/questions/3748/storing-images-in-db-yea-or-nay –
使用'varbinary(MAX)'而不是'image'。 – Dai