我想利用vc 6.0 将图片 存入 sql sever 2000 中,并读取希望提供程序或代码
 
[email protected]

解决方案 »

  1.   

    代码可以在网上找到很多现成的,我就不提供了,但是可以给你提供原理和操作过程:
    1、数据库字段应该使用blob image类型,能存放任意大小的二进制数据;
    2、通过SQL读写该字段当然不能按照普通变量映射方式来读写,而应该使用专用的BLOB方法。
      如果使用MFC的话,有两个封装类能直接跟此字段进行数据交换,一个是CByteArray,一个是CLongBinary。
      如果你使用的是OLEDB技术的话,还可以通过BEGIN_COLUMN_MAP/BLOB_ENTRY/END_COLUMN_MAP宏映射直接将数据读入或写出一个二进制缓冲区,前提是你要获得并保存一个ISequentialStream的COM接口。
      如果你使用的是ADO,那么可以调用Filed接口的GetChunk/AppendChunk方法来读写BLOB数据,不过读入或者写入的参数类型是一个VARIANT类型,里面保存的是SAFEARRAY<BYTE>的指针,必须使用SAFEARRAY专用的API来访问其数据。
      

  2.   

    参考如下文章:
    http://www.vckbase.com/document/viewdoc/?id=719
    http://www.vckbase.com/document/viewdoc/?id=252
      

  3.   

    曾经我也有过同样的问题,已经解决了
    http://topic.csdn.net/u/20080526/18/e2cc6490-66b5-4a74-ba23-d54162a8a82c.html
    这是我当时发的帖子,你看一下吧
      

  4.   

    greenfields大哥,您是否能提供代码啊?
    谢谢啊
    [email protected]
    我已经加分了
      

  5.   

    代码可以在网上找到很多现成的,我就不提供了,但是可以给你提供原理和操作过程: 
    1、数据库字段应该使用blob image类型,能存放任意大小的二进制数据; 
    2、通过SQL读写该字段当然不能按照普通变量映射方式来读写,而应该使用专用的BLOB方法。 
      如果使用MFC的话,有两个封装类能直接跟此字段进行数据交换,一个是CByteArray,一个是CLongBinary。 
      如果你使用的是OLEDB技术的话,还可以通过BEGIN_COLUMN_MAP/BLOB_ENTRY/END_COLUMN_MAP宏映射直接将数据读入或写出一个二进制缓冲区,前提是你要获得并保存一个ISequentialStream的COM接口。 
      如果你使用的是ADO,那么可以调用Filed接口的GetChunk/AppendChunk方法来读写BLOB数据,不过读入或者写入的参数类型是一个VARIANT类型,里面保存的是SAFEARRAY <BYTE>的指针,必须使用SAFEARRAY专用的API来访问其数据。
      

  6.   

    我已经给你发了我的程序,读写的是DICOM图像,你读什么图像,只要修改显示部分就可以了,读写数据库都是一样的