Muhammad Ali Dildar
Muhammad Ali Dildar

Reputation: 1527

How to load image from SQL Server into picture box?

I've tried a lot to find that how can I load an image from SQL Server to picture box but I couldn't find very much helpful material.

First I saved image into the data-base with the help of following query:

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

Now I want to load the image into a picture box.

Upvotes: 11

Views: 82917

Answers (4)

Karthik
Karthik

Reputation: 1

Check with this code:

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);
}

In data mention your column name of image. Change your Picturebox name as you mention in your Form.

Upvotes: 0

Pankaj Upadhyay
Pankaj Upadhyay

Reputation: 13594

What we do when dealing with images in dynamic scenarios is the following:

  1. Upload the image to some web application directory (like /images/ or something)

  2. We store the URL address in the database field of the table.

  3. Place where you want to include the image, just set the image source to the database field and it will be displayed.

Upvotes: 1

rzjfr
rzjfr

Reputation: 61

have a look at: http://msdn.microsoft.com/en-us/library/ms175915.aspx

your changed code:

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

Upvotes: 2

CassOnMars
CassOnMars

Reputation: 6181

You never uploaded the image contents to the database. That's just the file name.

Say, as an example, that you have a file path to work with (it seems you do, given the question's contents). In your application, you would upload this to the database following this format:

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();

Please bear in mind that your pic field will more than likely need to change data type. A common type for this information is VARBINARY.

The next part is reading the file into a PictureBox. For this, you'll need to SELECT the data out:

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);
} 

And that should be about it. You might want to do better safety checks, but this should help you get started.

Upvotes: 31

Related Questions