C# 使用VisualStudio从access数据库获取图像

C# 使用VisualStudio从access数据库获取图像,c#,C#,我正试图从VisualStudio获取Access数据库的图片 这是我的代码: var DBPath = Application.StartupPath + "\\Bd.mdb"; Console.Write("Ruta: " + Application.StartupPath); conn = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;"+"DataSource=" + DBPath); conn.Open(); Ole

我正试图从VisualStudio获取Access数据库的图片 这是我的代码:

   var DBPath = Application.StartupPath + "\\Bd.mdb";
Console.Write("Ruta: " + Application.StartupPath);
conn = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;"+"DataSource=" + DBPath);
conn.Open();

OleDbCommand cmd = new OleDbCommand(" SELECT * from Bono", conn);
cmd.CommandType = CommandType.Text;
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataTable dt = new DataTable("dt");
da.Fill(dt);
        if (dt != null)
        {
            sorteo = (string)dt.Rows[0]["Sorteo"];
            fecha = (DateTime)dt.Rows[0]["Fecha"];
            labelFecha.Text = fecha.Day.ToString() + "/" + fecha.Month.ToString() + "/" + fecha.Year.ToString();
            byte[] data = (byte[])dt.Rows[0]["Imagen"];
            MemoryStream ms = new MemoryStream();
            ms.Write(data, 0, data.Length);
            ms.Position = 0;
            Lista.Image = Image.FromStream(ms,false);
        }
但它给了我这个异常:一个类型为“System.ArgumentException”System.Drawing.dll的未处理异常 行中:Lista.Image=Image.fromstreams,false

Image.FromStream方法需要一个Stream参数,但您提供了一个MemoryStream参数。因此出现了参数异常错误。

如果您查看,您将看到它引发ArgumentException的唯一两个原因是您传入的流为null,这对于您的情况是不可能的,或者流中的字节不代表有效的图像格式


检查您正在读取的数据是否为有效图像,使用file.writealBytes文件名data将内容保存到文件中,然后尝试使用图像查看器打开它。

MemoryStream继承自流。请查看引发ArgumentException的原因。每当您在问题中共享异常信息时,请确保单击并在问题中输入完整的异常详细信息。异常中包含有用的数据,可以找出错误所在。感谢您提供的信息,我已经尝试过了,但没有打开图像。我想这不会很好地将图像保存在数据库中。我会检查Access数据库。