gpt4 book ai didi

c# - 在 Visual Studio C# 中以 MS Access 数据库形式获取 OLE(位图)对象,我的代码有什么问题?

转载 作者:行者123 更新时间:2023-12-03 19:34:29 28 4
gpt4 key购买 nike

我正在尝试从 MS Access DB 获取图像。数据已正确获取,但当我尝试显示时,显示了一些错误。我的显示图像的代码是,

            ...
byte[] photoBytes = (byte[])res[11];
var ms = new System.IO.MemoryStream(photoBytes);
image.Image = new System.Drawing.Bitmap(ms);
...

错误:附加信息:参数无效。 enter image description here

谁能告诉我错误在哪里,或者错误的概率?

我的功能是

public OleDbDataReader studentInfo(String adm_no)
{
OleDbConnection con = new OleDbConnection(ConnStr);
con.Open();
OleDbCommand command = new OleDbCommand("SELECT * FROM student_info WHERE adm_no = '"+adm_no+"'", con);
OleDbDataReader res = command.ExecuteReader();
return res;
}

最佳答案

据我所知,OLE 是野兽。如果您确定数据类型是什么,那么检查它的二进制结构就有一些机会。 OLE 是一个容器,因此在我看来,它不仅仅是纯粹的内容。

我不再有代码了,但我记得在不同类型(Excel、Word、文本文件、图像...)的 OLE 的十六进制转储中进行钓鱼,最终成功率可能达到 80%。如果这是因为我们决定支持的类​​型或我对 OLE 内部结构的了解非常有限,我就无法判断了。

我对调试的建议是在处理二进制数据之前绝对确保您拥有原始位图数据:

我的方法是创建一个小对象(在本例中是位图),将其存储在数据库中,获取它的 BLOB 并在其中查找已知模式。我记得我通过逆向工程发现了一些结构 - 例如搜索对象的字节大小 - 以及相对于数据开头的稍微稳定的偏移量。

但是,如果您碰巧知道 - 甚至更好 - 拥有 OLE 对象的确切结构和实现,并且能够处理它,我绝对有信心您能够做到也可以存储它并将其作为位图打开。

祝你好运!

关于c# - 在 Visual Studio C# 中以 MS Access 数据库形式获取 OLE(位图)对象,我的代码有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41961320/

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