如何将RAR文件写入blob字段中,再将blob中的数据导出,保存为RAR rt需要代码Oracle数据库 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 using System;using System.Data.OracleClient;using System.IO;namespace fenghua.Data.Oracle{ /**//// <summary> /// Class1 的摘要说明。 /// </summary> public class OracleLobData { private OracleConnection conn; public OracleLobData() { // // TODO: 在此处添加构造函数逻辑 // } /**//* * 在调用此函数之前需要写插入一个字符串到 BLOB 中比如: * Select some data. * Table Schema: * "CREATE TABLE tablewithlobs (a int, b BLOB, c CLOB, d NCLOB)"; * "INSERT INTO tablewithlobs values (1, 'AA', 'AAA', N'AAAA')"; * 否则程序会在 OracleLob tempLob = reader.GetOracleLob(0) 处出错。 */ /**//// <summary> /// 文件写入到 Oracle Blob 字段中。 /// </summary> /// <param name="idData">id 值</param> /// <param name="fileName">文件名</param> /// <param name="id">id 键</param> /// <param name="blob">blob 键</param> /// <param name="tableName">表名</param> public void WriteBlob(int idData, string fileName, string id, string blob, string tableName) { string connString = "server=oratest;User ID=kttest;Password=test"; using(conn = new OracleConnection(connString)) { try { conn.Open(); OracleCommand cmd = conn.CreateCommand(); // 利用事务处理(必须) OracleTransaction transaction = cmd.Connection.BeginTransaction(); cmd.Transaction = transaction; // 获得 OracleLob 指针 cmd.CommandText = "select " + blob + " from " + tableName + " where " + id + " = " + idData + " FOR UPDATE"; OracleDataReader reader = cmd.ExecuteReader(); using(reader) { //Obtain the first row of data. reader.Read(); //Obtain a LOB. OracleLob tempLob = reader.GetOracleLob(0); // 将文件写入 BLOB 中 FileStream fs = new FileStream(fileName,FileMode.Open); tempLob.BeginBatch(OracleLobOpenMode.ReadWrite); int length = 10485760; byte[] Buffer = new byte[length]; int i; while((i = fs.Read(Buffer,0,length)) > 0) { tempLob.Write(Buffer,0,i); } fs.Close(); tempLob.EndBatch(); cmd.Parameters.Clear(); } // 提交事务 transaction.Commit(); } catch(Exception ex) { throw ex; } finally { conn.Close(); } } } /**//// <summary> /// 读取 Oracle Blob 到文件中。 /// </summary> /// <param name="idData">id 值</param> /// <param name="fileName">文件名</param> /// <param name="id">id 键</param> /// <param name="blob">blob 键</param> /// <param name="tableName">表名</param> public void ReadBlob(int idData,string fileName, string id, string blob, string tableName) { string connString = "server=oratest;User ID=kttest;Password=test"; using(conn = new OracleConnection(connString)) { try { conn.Open(); OracleCommand cmd = conn.CreateCommand(); // 利用事务处理(必须) OracleTransaction transaction = cmd.Connection.BeginTransaction(); cmd.Transaction = transaction; // 获得 OracleLob 指针 string sql = "select " + blob + " from " + tableName + " where " + id + " = " + idData; cmd.CommandText = sql; OracleDataReader dr = cmd.ExecuteReader(); dr.Read(); OracleLob tempLob = dr.GetOracleLob(0); dr.Close(); // 读取 BLOB 中数据,写入到文件中 FileStream fs = new FileStream(fileName,FileMode.Create); int length = 1048576; byte[] Buffer = new byte[length]; int i; while((i = tempLob.Read(Buffer,0,length)) > 0) { fs.Write(Buffer,0,i); } fs.Close(); tempLob.Clone(); cmd.Parameters.Clear(); // 提交事务 transaction.Commit(); } catch(Exception ex) { throw ex; } finally { conn.Close(); } } } } 网上搜索到的,RAR,压缩文件?? c#窗体程序添加现有数据文件时错误 88分请教框架调用问题 超急!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!懂正则表达式的高手进来看下,在线等,马上结贴给分!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 怎么判断在窗体上是否单击了 某个按钮? 仅限一天:“惹火地带”整站原代码下载(决不食言,仅供学习)! 问一个弱智的问题,vs2005怎么调置启动窗体? 如何用C#写一个简单的发送邮件小程序呢? 用C# 替换word的字符串 如何在PictureBox中实现选择框功能 Json反序列化对象求解 打印问题,如何控制打印机走纸 一个文件读入的问题(急)
using System.Data.OracleClient;
using System.IO;namespace fenghua.Data.Oracle
{
/**//// <summary>
/// Class1 的摘要说明。
/// </summary>
public class OracleLobData
{
private OracleConnection conn;
public OracleLobData()
{
//
// TODO: 在此处添加构造函数逻辑
//
} /**//*
* 在调用此函数之前需要写插入一个字符串到 BLOB 中比如:
* Select some data.
* Table Schema:
* "CREATE TABLE tablewithlobs (a int, b BLOB, c CLOB, d NCLOB)";
* "INSERT INTO tablewithlobs values (1, 'AA', 'AAA', N'AAAA')";
* 否则程序会在 OracleLob tempLob = reader.GetOracleLob(0) 处出错。
*/
/**//// <summary>
/// 文件写入到 Oracle Blob 字段中。
/// </summary>
/// <param name="idData">id 值</param>
/// <param name="fileName">文件名</param>
/// <param name="id">id 键</param>
/// <param name="blob">blob 键</param>
/// <param name="tableName">表名</param>
public void WriteBlob(int idData, string fileName, string id, string blob, string tableName)
{
string connString = "server=oratest;User ID=kttest;Password=test";
using(conn = new OracleConnection(connString))
{
try
{
conn.Open();
OracleCommand cmd = conn.CreateCommand(); // 利用事务处理(必须)
OracleTransaction transaction = cmd.Connection.BeginTransaction();
cmd.Transaction = transaction; // 获得 OracleLob 指针
cmd.CommandText = "select " + blob + " from " + tableName + " where " + id + " = " + idData + " FOR UPDATE";
OracleDataReader reader = cmd.ExecuteReader();
using(reader)
{
//Obtain the first row of data.
reader.Read();
//Obtain a LOB.
OracleLob tempLob = reader.GetOracleLob(0); // 将文件写入 BLOB 中
FileStream fs = new FileStream(fileName,FileMode.Open);
tempLob.BeginBatch(OracleLobOpenMode.ReadWrite);
int length = 10485760;
byte[] Buffer = new byte[length];
int i;
while((i = fs.Read(Buffer,0,length)) > 0)
{
tempLob.Write(Buffer,0,i);
}
fs.Close();
tempLob.EndBatch();
cmd.Parameters.Clear();
}
// 提交事务
transaction.Commit();
}
catch(Exception ex)
{
throw ex;
}
finally
{
conn.Close();
}
}
} /**//// <summary>
/// 读取 Oracle Blob 到文件中。
/// </summary>
/// <param name="idData">id 值</param>
/// <param name="fileName">文件名</param>
/// <param name="id">id 键</param>
/// <param name="blob">blob 键</param>
/// <param name="tableName">表名</param>
public void ReadBlob(int idData,string fileName, string id, string blob, string tableName)
{
string connString = "server=oratest;User ID=kttest;Password=test";
using(conn = new OracleConnection(connString))
{
try
{
conn.Open();
OracleCommand cmd = conn.CreateCommand(); // 利用事务处理(必须)
OracleTransaction transaction = cmd.Connection.BeginTransaction();
cmd.Transaction = transaction; // 获得 OracleLob 指针
string sql = "select " + blob + " from " + tableName + " where " + id + " = " + idData;
cmd.CommandText = sql;
OracleDataReader dr = cmd.ExecuteReader();
dr.Read();
OracleLob tempLob = dr.GetOracleLob(0);
dr.Close(); // 读取 BLOB 中数据,写入到文件中
FileStream fs = new FileStream(fileName,FileMode.Create);
int length = 1048576;
byte[] Buffer = new byte[length];
int i;
while((i = tempLob.Read(Buffer,0,length)) > 0)
{
fs.Write(Buffer,0,i);
}
fs.Close();
tempLob.Clone();
cmd.Parameters.Clear(); // 提交事务
transaction.Commit();
}
catch(Exception ex)
{
throw ex;
}
finally
{
conn.Close();
}
}
}
}
RAR,压缩文件??