2016-03-02 66 views
-2

我目前在Microsoft Visual Studio工作,我正在为学校做一个项目,在那里我必须制作一个应用程序,让您在电影院预订座位并查看您选择的电影的描述以及离开/阅读回顾。如何将图像添加到SQL Server数据库?

在我的应用程序中,我决定要包含图片(基本上是每个电影的海报);我制作了Movies表格,并将idf作为我的主要关键字。我在表格定义中添加了一个poster列,我已将其类型设置为image

我的问题是,我如何分配一个特定的图像到电影,以便有权访问它,并能够稍后使用某种查询来显示它?

+1

将图像添加到数据库不是一个好主意。只需将文件名或路径添加到文件 –

+2

@Ashkan Mobayen Khiabani这是一个错误的概括。有些情况下,将图像存储在数据库中是有意义的。请参阅http://stackoverflow.com/questions/3748/storing-images-in-db-yea-or-nay –

+1

使用'varbinary(MAX)'而不是'image'。 – Dai

回答

1

那么,首先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 
} 

同样为INSERTUPDATE

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来恢复图像(搜索如何做到这一点)。

0
insert into Movies(poster) 
SELECT BulkColumn 
FROM Openrowset(Bulk 'image..Path..here', Single_Blob) as img. 

BulkColumn是语法。

相关问题