对oracle中的BLOB的操作(读取,写入)
将BLOB保存为本地文档:
/// <summary>
/// 读出Blob字段
/// </summary>
/// <param name="commandText">sql语句,执行结果为BLOB数据</param>
/// <param name="DocumentAddress">将要把BLOB数据保存为的文档的路径</param>
public void ReadBlob(string commandText, string DocumentAddress)
{
try
{
Open();
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = commandText;
// 利用事务处理(必须)
OracleTransaction transaction = cmd.Connection.BeginTransaction();
cmd.Transaction = transaction;
reader = cmd.ExecuteReader();
reader.Read();
OracleLob BLOB = reader.GetOracleLob(0);
reader.Close();
FileStream DataStream = new FileStream(DocumentAddress, FileMode.Create);
int length = 30485760;
byte[] Buffer = new byte[length];
int i;
while ((i = BLOB.Read(Buffer, 0, length)) > 0)
{
DataStream.Write(Buffer, 0, i);
}
DataStream.Close();
BLOB.Clone();
cmd.Transaction.Commit();
}
catch (OracleException e)
{
cmd.Transaction.Rollback();
throw e;
}
finally
{
Close();
}
}
将本地文档保存为BLOB类型:
/// <summary>
/// 写入Blob字段
/// </summary>
/// <param name="commandText">sql语句,执行结果为BLOB数据</param>
/// <param name="DocumentAddress">本地文档的路径</param>
public void WriteBlob(string commandText, string DocumentAddress
相关文档:
1. 准备知识:ORACLE的逻辑存储管理.
ORACLE在逻辑存储上分4个粒度:表空间,段,区和块.
1.1 块:是粒度最小的存储单位,现在标准的块大小是8K,ORACLE每一次I/O操作也是按块来操作的,也就是说当ORACLE从数据文件读数据时,是读取多少个块,而不是多少行.
1.2 区:由一系列相邻的块而组成,这也是ORACLE空间分配的基本单位,举个 ......
# LISTENER.ORA Network Configuration File: /opt/oracle/product/9.2/network/admin/listener.ora
# Generated by Oracle configuration tools.
ORA92 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS ......
oracle数据库中sql基础
作者:佚名 转贴自:本站原创 浏览次数:21 文章录入:admin
一、关系数据库的一些概念
1、主键的值一般不可以改变
2、外键:指向另一个表或本表的主键或唯一键的字段。外键的值一定要和某一主键相同 ......
做数据库开发或管理的人经常要创建大量的测试数据,动不动就需要上万条,如果一条一条的录入,那会浪费大量的时间,本文介绍了Oracle中如何通过一条SQL快速生成大量的测试数据的方法。
产生测试数据的SQL如下:
SQL> select rownum as id,
2 &nb ......