gpt4 book ai didi

c# - 将Access DB中的图片读入PictureBox

转载 作者:行者123 更新时间:2023-11-30 17:25:05 25 4
gpt4 key购买 nike

我一直在尝试在 C# Windows 应用程序的 PictureBox 中读取保存在 Access DB 中的图片作为 OLE 对象。

执行此操作的代码如下所示:

        string connString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Rajesh\SampleDB_2003.mdb;";
OleDbConnection oConn = new OleDbConnection(connString);
oConn.Open();
string commandString = "select * from employee where id = " + id + "";
OleDbCommand oCmd = new OleDbCommand(commandString, oConn);
OleDbDataReader oReader = oCmd.ExecuteReader(CommandBehavior.SequentialAccess);

while (oReader.Read())
{
txtID.Text = ((int)oReader.GetValue(0)).ToString();
txtName.Text = (string)oReader.GetValue(1);
txtAge.Text = ((int)oReader.GetValue(2)).ToString();
txtType.Text = (string)oReader.GetValue(3);
byte[] imageBytes = (byte[])oReader.GetValue(4);

MemoryStream ms = new MemoryStream();
ms.Write(imageBytes, 0, imageBytes.Length);
Bitmap bmp = new Bitmap(ms);
pbPassport.Image = bmp;
}

当我执行上面的代码时,“参数无效”异常在以下行抛出:

Bitmap bmp = new Bitmap(ms)

从异常消息中可以清楚地看出“ms”的格式无法识别。有什么建议可以解决这个问题吗?

最佳答案

不幸的是,我没有好的答案给你,但我可以告诉你,当我尝试时,我得到了相同的结果。有时跳过字节数组的前 78 个字节有效,有时则无效。

这是因为 OLE 对象数据类型在字段中存储了某种类型的 header ,以便 Access 知道它是什么类型的 OLE 对象。我找不到可靠的方法来准确计算出此 header 停止的位置和实际数据的开始位置,但我也放弃了,祝你好运 :)

关于c# - 将Access DB中的图片读入PictureBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/217928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com