OraDatabase クラスは、OraSession クラスで作成した OracleConnection を保持します。

トランザクションの管理(BeginTrans, CommitTrans, ResetTrans, Rollback)
SQL の実行(CreateDynaset, ExecuteSQL)
コネクションの切断(Dispose)

を行います。

簡易版なので、CreateDynaset はオプションをまったく無視。
OracleDataAdapter を使って DataTable へ一気に読み込みます。

 using System;
 using System.Data;
 using Oracle.DataAccess.Client;
 
 namespace OracleInProcServer.NET
 {
     public class OraDatabase : IDisposable 
     {
         private OracleConnection m_OracleConnection;
         private OracleTransaction m_Transaction = null;
 
         internal OraDatabase(OracleConnection con)
         {
             m_OracleConnection = con;
         }
 
         public OraDynaset CreateDynaset(string sqlStmt, int dynOption)
         {
             using (OracleDataAdapter adapter = 
                             new OracleDataAdapter(sqlStmt.Replace("\r\n", "\n"), m_OracleConnection))
             {
                 adapter.ReturnProviderSpecificTypes = true;
                 DataTable dt = new DataTable();
                 adapter.Fill(dt);
                 return new OraDynaset(dt);
             }
         }
 
         public int ExecuteSQL(string sqlStmt)
         {
             using (OracleCommand cmd = m_OracleConnection.CreateCommand())
             {
                 cmd.CommandText = sqlStmt.Replace("\r\n", "\n");
                 return cmd.ExecuteNonQuery();
             }
         }
 
         public void BeginTrans()
         {
             m_Transaction = m_OracleConnection.BeginTransaction();
         }
 
         public void CommitTrans()
         {
             m_Transaction.Commit();
             ResetTrans();
         }
 
         public void Rollback()
         {
             m_Transaction.Rollback();
             ResetTrans();
         }
 
         public void ResetTrans()
         {
             if (m_Transaction != null) 
             {
                 m_Transaction.Dispose();
                 m_Transaction = null;
             }
         }
 
         public void Dispose()
         {
             ResetTrans();
             if (m_OracleConnection != null)
             {
                 m_OracleConnection.Dispose();
                 m_OracleConnection = null;
             }
             GC.SuppressFinalize(this); 
         }
     }
 }
 



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   最終更新のRSS
Last-modified: 2013-03-19 (火) 22:35:22 (1558d)