2016-04-15 16 views
-2

Ich habe ein kleines Problem, aber ich brauche deine Hilfe. Ich habe Bilder erfolgreich in die DB eingefügt, daher versuche ich auf diese Bilder über DataGridView zuzugreifen. Immer, wenn ich auf dgv row/cell klicke, muss das Bild/die Bilder in der Bildbox erscheinen. Hier ist mein Code.Zeige Bild aus der Datenbank in DataGridView

SqlConnection con = new SqlConnection(ConnectionString); 
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Candidates WHERE CandidateID = '" + dataGridViewCandidate.SelectedRows[0].Cells[0].Value.ToString() + "'", con); 
DataTable dt = new DataTable(); 
da.Fill(dt); 
//dataGridViewCandidate.DataSource = dt; 
byte[] binaryimage = (byte[])dt.Rows[0][1]; 
Bitmap image; 
using (MemoryStream stream = new MemoryStream(binaryimage)) 
{ 
    image = new Bitmap(stream); 
} 
EmployeePhoto.Image = image; 

Der Fehler, den ich bekomme, ist unten; 'System.Byte []'

Sie eingeben Vielen Dank für Ihre Hilfe

Konnte nicht das Objekt des Typs 'System.DateTime' werfen.

+0

Der Code wird nicht einen 'überall DateTime' Typen bereitgestellt spezifiziert. Wo tritt der Fehler auf? – Steve

+0

Ich weiß, dass ist, was ich verwirrt – Brownsugar

+1

'(byte []) dt.Rows [0] [1];' Ich vermute, dass Sie die falsche Spalte verwenden. – Hendry

Antwort

0

Hier ist, wie man es in einem picturebox setzen

SqlCommand cmd = new SqlCommand("SELECT Image FROM tableName",yourConnectionStringHere); 
DataSet ds = new DataSet(); 
SqlDataAdapter da = new SqlDataAdapter(cmd); 
da.fill(ds); 
foreach(DataRow dr in ds.Tables[0].Rows) 
{ 
    Byte[] data = new Byte[0]; 
    data = (Byte[])(dr["ImageColumnName"]); 
    MemoryStream ms= new MemoryStream(data); 
    yourPictureBoxID.Image= Image.FromStream(ms); 
} 
Verwandte Themen