将位图图像从Access数据库导入C#程序

用户名

我在Visual Studio 2010中有一个C#程序,正在其中访问访问数据库中的数据。除了图像,我可以获得所有信息。我已按照此处的步骤将图片嵌入到Access数据库中。

Right-click the first field in the Image column of the table and click Insert Object.
Click Create from File, and then click Browse.
Browse to one or more Windows Bitmap (.bmp) or Device Independent Bitmap (.dib) images.      
You can find a set of BMP files, named Empid1.bmp through Empid9.bmp, at 
drive:\Program Files\Microsoft Office\OFFICE11\SAMPLES. Select the first image and click OK.

我虽然使用了位图图像的位置。我有一个包含位图属性的构造函数,但是当它尝试转到表以获取所有信息时,出现错误:“无法将System.Byte []的对象强制转换为System.Drawing.Bitmap类型。” 不知道为什么要说图像存储为系统字节。

找到了这个线程。所以我尝试了内存流,但是同样的问题,无法将系统字节转换为system.io.memorystream。

戈德·汤普森

您在问题中描述的将位图图像插入Access数据库的过程将保存嵌入在OLE对象中的图像。如果你想使用只是在C#程序中的位图图像,你需要从从访问检索到的二进制数据删除OLE“包装”。

例如,如果我从Access数据库中检索它,并尝试将其直接转换为新Bitmap对象...

private void Form1_Load(object sender, EventArgs e)
{
    using (var con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Public\Database1.accdb;"))
    {
        con.Open();
        using (var cmd = new OleDbCommand("SELECT LastName, FirstName, Photo FROM Clients WHERE ID=3", con))
        {
            OleDbDataReader rdr = cmd.ExecuteReader();
            rdr.Read();
            this.textBox1.Text = rdr["FirstName"].ToString();
            this.textBox2.Text = rdr["LastName"].ToString();
            byte[] photoBytes = (byte[])rdr["Photo"];
            var ms = new System.IO.MemoryStream(photoBytes);
            this.pictureBox1.Image = new System.Drawing.Bitmap(ms);
            ms.Close();
        }
        con.Close();
    }
}

...我收到“参数无效”错误:

Parameter.png

但是,如果我这里的其他答案中使用该类GetImageBytesFromOLEField方法删除了OLE“包装” ...OleImageUnwrap

var ms = new System.IO.MemoryStream(OleImageUnwrap.GetImageBytesFromOLEField(photoBytes));

...然后工作:

汉克.png

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将图像另存为“位图图像”到Access数据库

来自分类Dev

C#将数据从表单插入Access数据库

来自分类Dev

将货币插入 Access 数据库 C#?

来自分类Dev

图像未使用C#桌面应用程序保存SQLite数据库

来自分类Dev

使用c#将数据表插入Access数据库

来自分类Dev

使用C#将数据插入Access数据库无法正常工作

来自分类Dev

使用Visual C#将图像添加到SQL数据库

来自分类Dev

将图像保存在SQL数据库C#中

来自分类Dev

C#将图像作为Blob保存到MySql数据库

来自分类Dev

如何使用C#将图像上传到mysql数据库?

来自分类Dev

将图像保存在sql数据库C#中

来自分类Dev

使用Access数据库和Crystal Reports发布C#应用程序

来自分类Dev

将数据从数据库导入 GemFire

来自分类Dev

在VS 2015中使用ASP.net和C#将Excel 2016数据导入本地数据库

来自分类Dev

将 C# Windows 窗体中的应用程序与 firebird 数据库(LAN 网络)连接

来自分类Dev

在C#中从数据库检索图像

来自分类Dev

c#从数据库动态加载Radgrid中的图像

来自分类Dev

将数据库导入MySQL数据库

来自分类Dev

将datetime()记录转换为c#中的日期以导入到VFP数据库中

来自分类Dev

MySQL通过C#将数据写入数据库

来自分类Dev

使用C#将数据插入SQLite数据库

来自分类Dev

将Excel表格导入数据库

来自分类Dev

将XML导入Sql数据库

来自分类Dev

将XML导入MySQL数据库

来自分类Dev

将Excel表格导入数据库

来自分类Dev

C#删除数据库ms.access

来自分类Dev

使用C#打开Access数据库

来自分类Dev

C#从Access数据库获取双精度形式

来自分类Dev

C#在Access数据库中删除整行