运用C#处理lob数据类型 (Oracle)

2024-01-29 03:58

本文主要是介绍运用C#处理lob数据类型 (Oracle),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

运用C#处理lob数据类型 Oracle

一、           介绍不规则数据类型

随着媒体技术的进步,人们的要求也越来越多,因此现在的数据库中不单单存储简单的数据类型,还可以存储图片、文件、声音等非常庞大的二进制数据,我们把这种不规则数据类型叫做LOBLarge Object)。对于LOB数据即可以存储50K还可以存储50M的二进制数据内容。

Oracle数据库中,大型数据类型有以下几种:

Clob: 和long型相似,clob可以存储单字节型数据

Nclob Nclob存储定宽的多字节国家字符集数据

Blob:可以存储无结构的二进制数据如图片

Bfile Bfile允许对Oracle数据库以外存储的大型二进制文件进行只读形式的访问。和其它三种lob类型数据 不同的是,bfile类型数据存储在一个单独的文件中,该文件不由Oracle来维护。

在这里主要介绍运用C#储存和读取图片(数据库Oracle)。

二、           处理Blob数据项的方式

1.首先介绍数据表结构

表:student

字段名                                       类型                                   说明

STUDENTID                             number                         id关键字段

SNAME                                     varchar2(50)                 姓名

SPHOTO                                    Blob                             图片

定义了序列SEQ_STUDENT_ID

 

2.接着介绍存储Blob数据项方式

注意:Blob数据不能象其它类型数据一样直接插入(INSERT)。插入前必须先插入一个空的Blob对象,BLOB类型的空对象为EMPTY_BLOB(),之后通过SELECT命令查询得到先前插入的记录并锁定,继而将空对象修改为所要插入的Blob对象。

⑴ 调用储存过程方式

               

       优点:层次清晰明了,存储速度快

       缺点:运用dbms_lob包用dbms_lob.write()写入只能存储32k以下的图片

⑵ 另一种调用储存过程方式

       在Oracle中写存储过程如下:

       create or replace procedure update_student_clob (

              id in number,

              file_name in varchar2)

       is

              b_lob  BLOB;

              f_lob   BFILE;

       BEGIN

              --首先把SPHOTO数据插入空值

              Update student set SPHOTO=empty_blob() where STUDENTID=id;

        --通过SELECT命令查询得到先前插入的记录并锁定

        SELECT SPHOTO INTO b_lob from student where STUDENTID=id for update;

        --读取图片文件对象

        f_lob:=bfilename(‘bb_images’, file_name);

              --打开图片文件对象

              dbms_lob.fileopen(f_lob,dbms_lob.file_readonly);

              --把图片文件对象写入Blob数据中

              dbms_lob.loadfromfile(b_lob,f_lob,dbms_lob.getlength(f_lob));

              dbms_lob.fileclose(f_lob);

       END;

/

其中:id代表关键字段idfile_name代表文件名 

       bb_images代表目录对象,目录对象创建如下

       create directory bb_images as ‘d:/kk’;

C#中的代码部分与

http://www.cnblogs.com/surprise/archive/2005/04/19/140461.html雷同,在这里就不必多说了

       优点:无论多大的图片都能处理,速度上也非常快

       缺点:只能存储数据库本地的图片

⑶ 不用储存过程的方式

       原代码ConsoleApplication2.rar  (推荐,在我们公司项目中就用到了)

优点:解决了所有以上的缺点

缺点:破坏了项目的层次感

 

3.最后介绍读取Blob数据项方式

       原代码WebImage.rar       读取图片的方式比较简单,首先把Blob从数据库中读取出来,接着生成图片格式,最后输出图片就行。

 

以上的方式都是试验成功,如果哪位大虾有更好的方式请随时交流

这篇关于运用C#处理lob数据类型 (Oracle)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/655657

相关文章

电脑提示xlstat4.dll丢失怎么修复? xlstat4.dll文件丢失处理办法

《电脑提示xlstat4.dll丢失怎么修复?xlstat4.dll文件丢失处理办法》长时间使用电脑,大家多少都会遇到类似dll文件丢失的情况,不过,解决这一问题其实并不复杂,下面我们就来看看xls... 在Windows操作系统中,xlstat4.dll是一个重要的动态链接库文件,通常用于支持各种应用程序

SQL Server数据库死锁处理超详细攻略

《SQLServer数据库死锁处理超详细攻略》SQLServer作为主流数据库管理系统,在高并发场景下可能面临死锁问题,影响系统性能和稳定性,这篇文章主要给大家介绍了关于SQLServer数据库死... 目录一、引言二、查询 Sqlserver 中造成死锁的 SPID三、用内置函数查询执行信息1. sp_w

Java对异常的认识与异常的处理小结

《Java对异常的认识与异常的处理小结》Java程序在运行时可能出现的错误或非正常情况称为异常,下面给大家介绍Java对异常的认识与异常的处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参... 目录一、认识异常与异常类型。二、异常的处理三、总结 一、认识异常与异常类型。(1)简单定义-什么是

C#如何去掉文件夹或文件名非法字符

《C#如何去掉文件夹或文件名非法字符》:本文主要介绍C#如何去掉文件夹或文件名非法字符的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#去掉文件夹或文件名非法字符net类库提供了非法字符的数组这里还有个小窍门总结C#去掉文件夹或文件名非法字符实现有输入字

C#之List集合去重复对象的实现方法

《C#之List集合去重复对象的实现方法》:本文主要介绍C#之List集合去重复对象的实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C# List集合去重复对象方法1、测试数据2、测试数据3、知识点补充总结C# List集合去重复对象方法1、测试数据

Oracle修改端口号之后无法启动的解决方案

《Oracle修改端口号之后无法启动的解决方案》Oracle数据库更改端口后出现监听器无法启动的问题确实较为常见,但并非必然发生,这一问题通常源于​​配置错误或环境冲突​​,而非端口修改本身,以下是系... 目录一、问题根源分析​​​二、保姆级解决方案​​​​步骤1:修正监听器配置文件 (listener.

C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式

《C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式》Markdown凭借简洁的语法、优良的可读性,以及对版本控制系统的高度兼容性,逐渐成为最受欢迎的文档格式... 目录为什么要将文档转换为 Markdown 格式使用工具将 Word 文档转换为 Markdown(.

Golang 日志处理和正则处理的操作方法

《Golang日志处理和正则处理的操作方法》:本文主要介绍Golang日志处理和正则处理的操作方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录1、logx日志处理1.1、logx简介1.2、日志初始化与配置1.3、常用方法1.4、配合defer

springboot加载不到nacos配置中心的配置问题处理

《springboot加载不到nacos配置中心的配置问题处理》:本文主要介绍springboot加载不到nacos配置中心的配置问题处理,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录springboot加载不到nacos配置中心的配置两种可能Spring Boot 版本Nacos

Java调用C#动态库的三种方法详解

《Java调用C#动态库的三种方法详解》在这个多语言编程的时代,Java和C#就像两位才华横溢的舞者,各自在不同的舞台上展现着独特的魅力,然而,当它们携手合作时,又会碰撞出怎样绚丽的火花呢?今天,我们... 目录方法1:C++/CLI搭建桥梁——Java ↔ C# 的“翻译官”步骤1:创建C#类库(.NET