Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 910
Muhammad Ali Dildar Avatar asked Nov 10 '11 18:11

Muhammad Ali Dildar


1 Answers

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.

like image 171
CassOnMars Avatar answered Sep 21 '22 06:09

CassOnMars