2016-04-15 54 views
-2

我有一个小问题,但我需要你的帮助。我已经成功地将图片插入数据库,因此我试图通过DataGridView访问这些图片。每当我点击dgv行/单元格,我需要图片出现在图片框中。这是我的代码。在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; 

我得到的错误在下面;

无法投型 '的System.DateTime' 的对象键入 'System.Byte []'

谢谢您的帮助。

+0

您提供的代码没有任何地方指定'DateTime'类型里面。错误发生在哪里? – Steve

+0

我知道这是我混淆 – Brownsugar

+1

'(byte [])dt.Rows [0] [1];'我怀疑你使用了错误的列。 – Hendry

回答

0

这里是你如何把它放在一个PictureBox

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); 
} 
相关问题