使用Visual Studio访问数据库中的图像

本文关键字:图像 数据库 访问 Visual Studio 使用 | 更新日期: 2023-09-27 18:17:03

我正试图从visual studio获得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。

使用Visual Studio访问数据库中的图像

如果您查看FromStream的文档,您将看到它抛出ArgumentException的唯一两个原因是如果您传入的流为空(这对您的情况是不可能的)或流中的字节不代表有效的图像格式。

检查您正在读取的数据是有效的图像,将内容保存到使用File.WriteAllBytes("someFileName", data)的文件中,并尝试使用图像查看器打开它。

Image.FromStream方法需要一个Stream参数,但是您提供了一个MemoryStream参数。因此参数exception error