热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在VisualStudioC#中使用OLE(位图)对象形成MSAccess数据库,我的代码出了什么问题?

如何解决《在VisualStudioC#中使用OLE(位图)对象形成MSAccess数据库,我的代码出了什么问题?》经验,为你挑选了1个好方法。

我试图从MS Access DB中获取图像.正确获取数据,但是当我尝试显示某些错误时显示.我显示图片的代码是,

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

错误:附加信息:参数无效. 在此输入图像描述

任何人都可以告诉我错误或错误概率在哪里?

我的功能是

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;
    }

RuDevel.. 5

据我所知,OLE是野兽.如果您确切知道数据类型是什么,那么如果您检查它的二进制结构,则有一些机会.OLE是一个容器,所以它的IMO绝不仅仅是纯粹的内容.

我没有代码了,但我记得在不同类型的OLE(Excel,Word,Textfiles,图像......)的hexdump中钓鱼,最终成功率可能达到80%.如果那是因为我们决定支持的类​​型或者我对OLE内部结构的非常有限的了解,我就不能再说了.

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

我的方法是创建一个小对象(在本例中是一个位图),将其存储在DB中,获取它的BLOB并在那里查找已知模式.我记得我通过逆向工程找到了一些结构 - 比如搜索对象的字节大小 - 并且在数据开始时有一些稳定的偏移量.

但是,如果您碰巧知道 - 或者甚至更好 - 拥有 OLE对象的确切结构和实现并且能够处理它,我绝对相信您将设法存储它并将其作为位图打开.

祝好运!



1> RuDevel..:

据我所知,OLE是野兽.如果您确切知道数据类型是什么,那么如果您检查它的二进制结构,则有一些机会.OLE是一个容器,所以它的IMO绝不仅仅是纯粹的内容.

我没有代码了,但我记得在不同类型的OLE(Excel,Word,Textfiles,图像......)的hexdump中钓鱼,最终成功率可能达到80%.如果那是因为我们决定支持的类​​型或者我对OLE内部结构的非常有限的了解,我就不能再说了.

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

我的方法是创建一个小对象(在本例中是一个位图),将其存储在DB中,获取它的BLOB并在那里查找已知模式.我记得我通过逆向工程找到了一些结构 - 比如搜索对象的字节大小 - 并且在数据开始时有一些稳定的偏移量.

但是,如果您碰巧知道 - 或者甚至更好 - 拥有 OLE对象的确切结构和实现并且能够处理它,我绝对相信您将设法存储它并将其作为位图打开.

祝好运!


推荐阅读
author-avatar
ds87vdsa
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有