有没有一种方法可以将数据表的System.Data.SqlTypes.SqlBinary转换为System.Byte []类型?

时间:2019-12-09 16:47:02

标签: c# winforms datatable sql-types

我在C#中有一个动态图片框,它从datatable列中获取图片 数据表结构为:

ngAfterViewInit in footer component

我有一个字节数组来在图片框中显示图片:

public DataTable Pictures = new DataTable();
Pictures.Columns.Add("id", typeof(bool));
Pictures.Columns.Add("filebytes", typeof(SqlBinary));

,以下代码用于显示图像:

byte[] ImageBinary;
  

它从Openfile对话框中获取图像

我想从数据表中为Picturebox分配一个值,我的问题是当我更改如下代码时:

                        PictureBox a = new PictureBox();      
                        a.Location = new Point(100, 90);
                        a.Size = new Size(25, 25);
                        a.SizeMode = PictureBoxSizeMode.StretchImage;
                        groupBox3.Controls.Add(a);
                        MemoryStream ms = null;
                        Image img = null;
                        Tools b = new Tools();
                        ImageBinary = b.CreateImageBinary(openFileDialog1.FileName);
                        ms = new MemoryStream(ImageBinary);
                        Pictures.Rows.Add(new object[] { i, ImageBinary });
                        img = Image.FromStream(ms);
                        a.Image = img;
                        ms.Close();

它让我看到错误,例如:

  

无法将类型为'system.data.sqltypes.sqlbinary'的对象强制转换为类型   'system.byte []'

我很困惑,请帮助我

1 个答案:

答案 0 :(得分:1)

您可以使用DqlBinary.Explicit operator

public static explicit operator byte[] (System.Data.SqlTypes.SqlBinary x);

我的建议是将using System.Data.SqlTypes;导入添加到声明显式运算符的.cs文件的开头。

在编译器找不到命名空间的情况下,请查看包含该文件的dll的文档。