读取Oracle中的Blob字段生成对应的文件(一)

2014-11-24 18:02:24 · 作者: · 浏览: 4

读取WMF的Blob字段,生成wmf文件
///


/// 读取WMF字段,生成临时WMF文件


///


private void ReadWMFBlobField()


{


try


{


_connection.Open();



OracleCommand _selectCommand = _connection.CreateCommand();


OracleTransaction _transaction = _selectCommand.Connection.BeginTransaction();


_selectCommand.Transaction = _transaction;



+ m_zoneNo + "'";


_selectCommand.CommandText = _selectSQL;



OracleDataReader _dataReader = _selectCommand.ExecuteReader();


if (_dataReader.Read() == true)


{


OracleLob _oracleLob = _dataReader.GetOracleLob(0);


long _byteCount = _oracleLob.Length;


_dataReader.Close();



if (File.Exists(m_wmfFileName) == true)


{


File.Delete(m_wmfFileName);


}



FileStream _fileStream = File.Open(m_wmfFileName, FileMode.OpenOrCreate);


int _length = 30485760;


byte[] _buffer = new byte[_length];


int i = _oracleLob.Read(_buffer, 0, _length);


while (i > 0)


{


_fileStream.Write(_buffer, 0, i);


i = _oracleLob.Read(_buffer, 0, _length);


}



_fileStream.Close();


_oracleLob.Close();


_selectCommand.Parameters.Clear();



_transaction.Commit();


}


else


{


MessageBoxEx.Show("没有查找到相符合的记录!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);


}


}


catch (Exception ex)


{


MessageBoxEx.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);


}


}


读取DWG的Blob字段,生成DWG文件
///


/// 读取DWG字段,生成DWG文件


///


private void ReadDWGBlobField()


{


OracleConnection _connection = new OracleConnection(m_connectionString);



try


{


_connection.Open();



OracleCommand _selectCommand = _connection.CreateCommand();


OracleTransaction _transaction = _selectCommand.Connection.BeginTransaction();


_selectCommand.Transaction = _transaction;



string _selectSQL = "Select DWG from hsuser.ZDT where ZDNO = '"


+ m_zoneNo + "'";



_selectCommand.CommandText = _selectSQL;



OracleDataReader _dataReader = _selectCommand.ExecuteReader();



if (_dataReader.Read() == true)


{


OracleLob _oracleLob = _dataReader.GetOracleLob(0);


long _byteCount = _oracleLob.Length;


_dataReader.Close();



if (File.Exists(m_dwgFileName) == true)


{


File.Delete(m_dwgFileName);


}



FileStream _fileStream = File.Open(m_dwgFileName, FileMode.OpenOrCreate);