odp.net 读写oracle blob字段
DEVELOPER: ODP.NET Serving Winning LOBs:
http://www.oracle.com/technetwork/issue-archive/2005/05-nov/o65odpnet-085139.html
Data Provider for .NET Developer's Guide:
https://docs.oracle.com/database/121/ODPNT/OracleBlobClass.htm#ODPNT4035
从blob字段读取一个图片文件的代码:
OracleConnection con = new OracleConnection(connStr);
con.Open(); // statement to get a blob
string sql = "select yz from sysusers where yhdh='123'"; // create command object
// InitialLOBFetchSize
// defaults to 0
OracleCommand cmd = new OracleCommand(sql, con); // create a datareader
using (OracleDataReader dr = cmd.ExecuteReader())
{
// read the single row result
dr.Read();
// use typed accessor to retrieve the blob
OracleBlob blob = dr.GetOracleBlob(); // create a memory stream from the blob
using (MemoryStream ms = new MemoryStream(blob.Value))
{
// set the image property equal to a bitmap
// created from the memory stream
pictureBox1.Image = new Bitmap(ms);
}
}
保存文件到blob字段的代码:
con.Open();
// 利用事务处理(必须)
OracleTransaction transaction = con.BeginTransaction();
string sql="select yz from sysusers where yhdh='123' FOR UPDATE";
OracleCommand cmd = new OracleCommand(sql, con);
using ( OracleDataReader reader = cmd.ExecuteReader())
{
//Obtain the first row of data.
reader.Read();
//Obtain a LOB.
OracleBlob blob = reader.GetOracleBlob();
blob.Erase();
// 将文件写入 BLOB 中
byte[] Buffer;
FileStream fs = new FileStream(@"d:\01.jpg", FileMode.Open);
using (MemoryStream ms = new MemoryStream())
{
int b;
while ((b = fs.ReadByte()) != -)
{
ms.WriteByte((byte)b);
}
Buffer = ms.ToArray();
}
// Begin ChunkWrite to improve performance
// Index updates occur only once after EndChunkWrite
blob.Position=;
blob.BeginChunkWrite(); //启用BeginChunkWrite不是必须,只与性能有关
blob.Write(Buffer, ,Buffer .Length); //从字节数据写入blob字段
blob.EndChunkWrite();
blob.Close();
}
// 提交事务
transaction.Commit();
con.Close();
odp.net 读写oracle blob字段的更多相关文章
- java 读写Oracle Blob字段
许久没有分享代码了,把这段时间写的一个Java操作Blob字段,有日子没写Java了,就当作笔记记录一下.1. [代码][Java]代码 跳至 [1] [全屏预览]package com.wa ...
- Oracle Blob 字段的模糊查询
原文地址:http://blog.csdn.net/springk/article/details/6866248
- 分块读取Blob字段数据(Oracle)
试过了MSSQL的分块读取Blob字段,又尝试在Oracle下完成,发现还是可行的. 首先建立一个存储过程: create or replace procedure PRO_GET_BLOB( ...
- Oracle数据库BLOB字段的存取
述] Oracle的Blob字段比较特殊,他比long字段的性能要好很多,可以用来保存例如图片之类的二进制数据. 写入Blob字段和写入其它类型字段的方式非常不同,因为Blob自身有一个cur ...
- Java读取oracle数据库中blob字段数据文件保存到本地文件(转载)
转自:https://www.cnblogs.com/forever2698/p/4747349.html package com.bo.test; import java.io.FileOutput ...
- c# winform 操作oracle数据库的Blob字段,把图片存储到数据库,保存图片到数据库
///c# winform 操作oracle数据库的Blob字段,把图片存储到数据库,保存图片到数据库 闲话不多说,直接上代码 using System; using System.Collectio ...
- FIREDAC保存ORACLE的BLOB字段数据
FIREDAC默认识别ORACLE的BLOB字段为HUGEBLOB,需要将HBLOB映射为BLOB,才可以保存ORACLE的BLOB字段的数据.
- oracle 下操作blob字段是否会产生大量redo
操作blob字段是否会产生大量redo,答案是不会.以下来做一个实验,測试数据库版本号是11.2.0.1.0: --创建一张表做測试之用 create table test_blob ( id n ...
- mybatis oracle BLOB类型字段保存与读取
一.BLOB字段 BLOB是指二进制大对象也就是英文Binary Large Object的所写,而CLOB是指大字符对象也就是英文Character Large Object的所写.其中BLOB是用 ...
随机推荐
- C语言函数篇(二)函数参数基础设计
形参实现一种数据传入的接口 ,由 实参 拷贝给 形参. 拷贝!!!!!!!!!!! 例1: void func(int tmp){ //意图是实现传进来的参数 +1 tmp++; } int mian ...
- 用python实现【五猴分桃】问题
转载链接:https://blog.csdn.net/cy309173854/article/details/78296839 据说“五猴分桃”问题最先是由大物理学家狄拉克提出来的,这一貌似简单的问题 ...
- PTA 7-12(图) 社交网络图中结点的“重要性”计算 最短路
7-12(图) 社交网络图中结点的“重要性”计算 (30 分) 在社交网络中,个人或单位(结点)之间通过某些关系(边)联系起来.他们受到这些关系的影响,这种影响可以理解为网络中相互连接的结点之间蔓延的 ...
- [BZOJ1060][ZJOI2007]时态同步(树形DP)
[我是传送门] 因为边权只能增加,那么设f[u]为u子树上从i出发到达某个叶节点的最大路径, 显然Ans应该增加f[u]-f[v]-e[i].w Code #include <cstdio> ...
- PHP.TP框架下商品项目的优化2-图片优化
图片存储.上传.显示优化 1.图片路径写进配置文件,当路径有变动时[因业务扩大,服务器存储图片空间不足等],只需修改配置文件,而不用修改代码 2.封装显示.上传.删除函数,实现代码重用 [可类比其他类 ...
- 10 class封装 ORM
1.版本1:初始化 # -*- coding:utf-8 -*- from MySQLdb import * class MysqlHelper: def __init__(self,host,por ...
- P1783 海滩防御
P1783 海滩防御 题目描述 WLP同学最近迷上了一款网络联机对战游戏(终于知道为毛JOHNKRAM每天刷洛谷效率那么低了),但是他却为了这个游戏很苦恼,因为他在海边的造船厂和仓库总是被敌方派人偷袭 ...
- java从数据库读取菜单,递归生成菜单树
首先看一下菜单的样子 根据这个样子我们定义菜单类 public class Menu { // 菜单id private String id; // 菜单名称 private String name; ...
- pdo事务
$pdo->beginTransaction() $pdo->commit() $pdo->rollback();
- equals和toString
Object的equals方法默认比较地址值.所以当需要比较两个对象的内容时需要重写equals方法.