2013-03-05 2 views
2
OleDbCommand and = new OleDbCommand(); 
c.Open(); 
and.Connection = c; 
and.CommandText = "SELECT * FROM MaleShoes WHERE IDhere=ID "; 
OleDbDataReader read = and.ExecuteReader(); 
while (read.Read()) 
{ 
    label6.Text = (read[1].ToString()); 
    textBox1.Text = (read[2].ToString()); 
    pictureBox1.Image = (read[3].ToString()); 
} 

c.Close(); 

Я получил эту ошибку:Как читать изображение из базы данных

Error 1 Cannot implicitly convert type 'string' to 'System.Drawing.Image'

Как мне это исправить?

Мои фотографии находятся в моей базе данных по третьей колонке.

+4

как они кодируются (какой формат) в вас DB ?? –

+4

Столбец в вашей базе данных, хранит ли он файл (т. Е. Поле blob) или имеет ли он путь и имя файла? – nvoigt

+2

Is read [3] содержит путь к изображению? – Swanand

ответ

3

Если ваш столбец базы данных содержит путь к файлу изображения, вы должны написать :

pictureBox1.Image = Image.FromFile((string)read[3]); 

Если данные изображения (двоичные), вы должны написать:

var bytes = (byte[])read[3]; 
using(MemoryStream ms = new MemoryStream(bytes)) 
{ 
    pictureBox1.Image = Image.FromStream(ms); 
} 
+0

в использовании этого, каков формат пути изображения? Это как это @ ".... \ image.jpg" –

+0

@ YOUn'Me Путь может быть относительным путем ('@". \ Images \ 1.png "') или abdolute path ('@" D: \ Project \ Images \ 1.png "') в файл изображения. –

4

Надежда эта помощь (в случае, если вы храните бинарный файл):

pictureBox1.Image = byteArrayToImage((byte[])read[3]); 

И ваш метод

public Image byteArrayToImage(byte[] byteArrayIn) 
{ 
    MemoryStream ms = new MemoryStream(byteArrayIn); 
    Image returnImage = Image.FromStream(ms); 
    return returnImage; 
} 
+1

не забывайте 'using System.IO' :) – Pyromancer

+0

он говорит, что параметр недействителен. –

+0

Каков тип данных вашего чтения [3] в вашей базе данных? – Alex

0

Вы можете попробовать это:

MemoryStream ms = new MemoryStream((byte[])read[1]); 

pictureBox1.Image = Image.FromStream(ms); 
1

вы также можете использовать этот

byte[] imagebyte = (byte[])read[3].ToString(); 

    MemoryStream ms = new MemoryStream(); 
    ms.Write(imagebyte, 0, imagebyte.Length); 
    Bitmap bmp = new Bitmap(ms); 
    pictureBox1.Image = bmp; 
+0

'byte [] imagebyte = (byte []) read [3] .ToString();' что там читается? – lexter

Смежные вопросы