分享

[原创]Oracle数据库中保存图片等非结构化数据(.net)

 orion360doc 2011-06-26

[原创]Oracle数据库中保存图片等非结构化数据(.net)

分享
标签: .Net  图片  Oracle  数据库  保存  分类: 编程技术 2007-05-14 16:09

    最近需要用Oracle数据库保存图片,于是进行了一下研究。其实不管是文档、图片、还是视频,这些都属于非结构化数据,保存的关键在转换类型,下面进行总结。

    1.在数据库表中建立一个LOB类型的字段,这种类型是专门用来保存图片等非结构化数据的,Oracle和SQL Server等大型数据库都支持这样的类型。
    具体类型可能会有若干种,Oralcle支持BLOB、CLOB、NCLOB、BFILE,BLOB是二进制型大对象,CLOB和NCLOB都是字符型大对象,BFILE只存储文件指针,实际的文件是存储在文件系统中的。一般采用BLOB,它支持最大4G的数据。

    2.在程序中将图片转化成字节数组。例如:
    MemoryStream mstream = new MemoryStream();
    image.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg);
    byte[] imageData = mstream.ToArray(); 

    3.用SQL语句进行操作,方法和普通字段类似,只是在要指定字段内容的时候采用参数,将字节数组通过参数传入。例如:
    CREATE TABLE table(ID NUMBER(3), PHOTO BLOB)
    INSERT INTO table(ID,PHOTO) VALUES('1', :Photo)
    :PHOTO是参数,注意这是在Oracle中的写法,在SQL Server中应该是@PHOTO。

    4.取出图像的时候只要将object强制转化为字节数组,再转化为图像即可。例如:
    MemoryStream mstream = new MemoryStream((byte[])imageData);
    Image image=Image.FromStream(mstream);

    其实对BLOB的操作也可以利用.Net的相关类库,不过我没用过,在此不表。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多