Reputation: 1527
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
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
Reputation: 13594
What we do when dealing with images in dynamic scenarios is the following:
Upload the image to some web application directory (like /images/ or something)
We store the URL address in the database field of the table.
Place where you want to include the image, just set the image source to the database field and it will be displayed.
Upvotes: 1
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
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