Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C语言中从数据库转换图像#_C#_Sql Server_Datagridview - Fatal编程技术网

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

C# 在C语言中从数据库转换图像#,c#,sql-server,datagridview,C#,Sql Server,Datagridview,在上面的代码中,我正在将数据从数据库访问到数据网格视图,但在表中,我有字节码中的图像,如何将图像从字节转换到图像,以及如何在c#中的windows应用程序中的DataGridView中进行更新。您正在读者列上使用ToString(),但这不起作用,因为列的数据类型是byte[]。您应该使用以下选项: cnn.Open(); cmd.CommandText = "select * from Slab where s_flatno=" + textBox1.Text; SqlDataReade

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

您正在读者列上使用
ToString()
,但这不起作用,因为列的数据类型是
byte[]
。您应该使用以下选项:

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()

作为补充建议,您应该使用更清晰的变量名,并且一定要通过列名而不是索引来访问data reader中的列,因为只要DB发生变化,列的顺序发生变化,这就会中断。

您没有对创建的img变量做任何操作。你可以试着把它放在一行:)。如果有帮助,请考虑接受答案,这样问题就解决了。
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());