讀取Oracle中的Blob欄位產生對應的檔案

來源:互聯網
上載者:User

讀取WMF的Blob欄位,產生wmf檔案
 /// <summary>

        /// 讀取WMF欄位,產生臨時WMF檔案

        /// </summary>

        private void ReadWMFBlobField()

        {

            OracleConnection _connection = new OracleConnection(m_connectionString);

            try

            {

                _connection.Open();

 

                OracleCommand _selectCommand = _connection.CreateCommand();

                OracleTransaction _transaction = _selectCommand.Connection.BeginTransaction();

                _selectCommand.Transaction = _transaction;

 

                string _selectSQL = "Select WMF 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_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檔案
 /// <summary>

        /// 讀取DWG欄位,產生DWG檔案

        /// </summary>

        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);

 

                    int _length = 30485760;

                    byte[] _buffer = new byte[_length];

                    int i;

                    while ((i = _oracleLob.Read(_buffer, 0, _length)) > 0)

                    {

                        _fileStream.Write(_buffer, 0, i);

                    }

 

                    _fileStream.Close();

                    _oracleLob.Clone();

                    _selectCommand.Parameters.Clear();

 

                    _transaction.Commit();

                }

                else

                {

                    MessageBoxEx.Show("沒有尋找到相符合的記錄!", "提示",

                        MessageBoxButtons.OK, MessageBoxIcon.Information);

                }

            }

 

            catch (Exception ex)

            {

                MessageBoxEx.Show(ex.Message, "警告", MessageBoxButtons.OK, MessageBoxIcon.Error);

            }

        }

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.