OraDynaset クラスでは、読み込んだ DataTable を管理します。

 using System;
 using System.Data; 
 using System.ComponentModel;
 
 namespace OracleInProcServer.NET
 {
     [DefaultProperty("OraFields")] 
     public class OraDynaset : IDisposable 
     {
         private DataTable m_DataTable;
         private OraFields m_Fields;
         private int m_RowPosition = 0;
 
         internal OraDynaset(DataTable dt)
         {
             m_DataTable = dt;
             m_Fields = new OraFields(this, dt.Columns);
             MoveFirst();
         }
 
         public OraFields Fields
         {
             get { return m_Fields; }
         }
 
         public void Dispose()
         {
             if (m_DataTable != null)
             {
                 m_DataTable.Dispose();
                 m_DataTable = null;
             }
             GC.SuppressFinalize(this); 
         }
 
         public void MoveFirst()
         {
             m_RowPosition = 0;
         }
 
         public void MoveNext()
         {
             m_RowPosition++;
         }
 
         public bool Eof
         {
             get { return m_RowPosition >= m_DataTable.Rows.Count; }
         }
 
         public int RecordCount
         {
             get { return m_DataTable.Rows.Count; } 
         }
 
         internal DataRow CurrentRow
         {
             get { return m_DataTable.Rows[m_RowPosition]; }
         }
     }
 }

AddNew, Update, Delete などの更新を行いたいときは、DataTable に対して更新をかけ、Dynaset の作成に使用した OracleDataAdapter と OracleCommandBuilder を使用すれば実装できます。

    adapter.Update(new DataRow[] { m_CurrentDataRow });

ORADYN_ORAMODE、ORADYN_NO_REFETCH の実装はとても面倒そうなので、私はあきらめました。




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