在C#中从数据库转换图像

时间:2018-02-13 08:22:17

标签: c# sql-server datagridview

cnn.Open();

cmd.CommandText = "select * from Slab  where s_flatno=" + textBox1.Text;

SqlDataReader dr1;
dr1 = cmd.ExecuteReader();

while (dr1.Read())
{
        byte[] img1 = File.ReadAllBytes(dr1[7].ToString());
        MemoryStream ms = new MemoryStream(img1);
        Image img = Image.FromStream(ms);
        dataGridView1.Rows.Add(dr1[1].ToString(), dr1[4].ToString(), dr1[5].ToString(), dr1[6].ToString(),dr1[7].ToString());
        count = Convert.ToInt32(dataGridView1.Rows.Count.ToString());
   }

lblcount.Text = count.ToString();
dr1.Close();
cnn.Close()

在上面的代码中,我正在访问数据从数据库到数据网格视图,但在表中我有字节代码的图像,如何将图像从字节转换为图像,如何在c#中的Windows应用程序中的DataGridView中更新

1 个答案:

答案 0 :(得分:1)

您在阅读器列上使用ToString(),但由于列的数据类型为byte[],因此无效。您应该使用以下内容:

byte[] imageData = ( byte[] )dr1[7];
MemoryStream ms = new MemoryStream(imageData);
Image img = Image.FromStream(ms);
dataGridView1.Rows.Add(dr1[1].ToString(), dr1[4].ToString(), dr1[5].ToString(), dr1[6].ToString(),dr1[7].ToString());
count = Convert.ToInt32(dataGridView1.Rows.Count.ToString());

作为附加建议,您应该使用更清晰的变量名称,并且必须按列名而不是索引访问数据读取器中的列,因为这会在DB发生更改并且列顺序发生变化时随时中断。