如何将图像从SQL Server加载到图片框?

时间:2011-11-10 18:38:26

标签: c# winforms sql-server-2008 picturebox

我已经尝试了很多,我怎么能将图像从SQL Server加载到图片框中,但我找不到非常有用的材料。

首先,我借助以下查询将图像保存到数据库中:

insert into imageTest (pic_id, pic)
values(1, 'D:\11.jpg')

现在我想将图片加载到图片框中。

4 个答案:

答案 0 :(得分:25)

您从未将图像内容上传到数据库。那只是文件名。

例如,假设您有一个可以使用的文件路径(考虑到问题的内容,您似乎可以这样做)。在您的应用程序中,您可以按照以下格式将其上载到数据库:

byte[] image = File.ReadAllBytes("D:\\11.jpg");

SqlCommand sqlCommand = new SqlCommand("INSERT INTO imageTest (pic_id, pic) VALUES (1, @Image)", yourConnectionReference);
sqlCommand.Parameters.AddWithValue("@Image", image);
sqlCommand.ExecuteNonQuery();

请注意,您的pic字段很可能需要更改数据类型。此信息的常见类型为VARBINARY

下一部分是将文件读入PictureBox。为此,您需要选择输出数据:

SqlDataAdapter dataAdapter = new SqlDataAdapter(new SqlCommand("SELECT pic FROM imageTest WHERE pic_id = 1", yourConnectionReference));
DataSet dataSet = new DataSet();
dataAdapter.Fill(dataSet);

if (dataSet.Tables[0].Rows.Count == 1)
{
    Byte[] data = new Byte[0];
    data = (Byte[])(dataSet.Tables[0].Rows[0]["pic"]);
    MemoryStream mem = new MemoryStream(data);
    yourPictureBox.Image= Image.FromStream(mem);
} 

这应该是关于它的。您可能希望进行更好的安全检查,但这应该可以帮助您入门。

答案 1 :(得分:2)

看看: http://msdn.microsoft.com/en-us/library/ms175915.aspx

您更改的代码:

insert into imageTest (pic_id, pic)
select 1, BulkColumn
FROM Openrowset( Bulk 'D:\11.jpg', Single_Blob) as img

答案 2 :(得分:1)

参见穆罕默德,我们在动态场景中处理图像时所做的工作如下:

  1. 将图像上传到某个Web应用程序目录(例如/ images /或其他内容)

  2. 我们将URL地址存储在表格的数据库字段中。

  3. 放置要包含图像的位置,只需将图像源设置为数据库字段即可显示。

  4. 希望这有帮助

答案 3 :(得分:0)

检查此代码:

SqlDataAdapter dAdapter = new SqlDataAdapter(new SqlCommand("SELECT Photo FROM Image", conn));
        DataSet dSet = new DataSet();
        dAdapter.Fill(dSet);

        if (dSet.Tables[0].Rows.Count == 1)
        {
            Byte[] data = new Byte[0];
            data = (Byte[])(dSet.Tables[0].Rows[0]["Photo "]);
            MemoryStream mem = new MemoryStream(data);
            PictureBoxName.Image = Image.FromStream(mem);
         }

在数据中提及您的图像列名称。 如您在表单中提到的那样更改Picturebox名称。