2002-11-01 Daniel Morgan <danmorg@sc.rr.com>
authorDaniel Morgan <monodanmorg@yahoo.com>
Sat, 2 Nov 2002 01:29:56 +0000 (01:29 -0000)
committerDaniel Morgan <monodanmorg@yahoo.com>
Sat, 2 Nov 2002 01:29:56 +0000 (01:29 -0000)
* OleDbDataReader.cs: implemented
Dispose() and GetEnumerator()

svn path=/trunk/mcs/; revision=8740

mcs/class/System.Data/System.Data.OleDb/ChangeLog [new file with mode: 0644]
mcs/class/System.Data/System.Data.OleDb/OleDbDataReader.cs

diff --git a/mcs/class/System.Data/System.Data.OleDb/ChangeLog b/mcs/class/System.Data/System.Data.OleDb/ChangeLog
new file mode 100644 (file)
index 0000000..fe6597a
--- /dev/null
@@ -0,0 +1,5 @@
+2002-11-01  Daniel Morgan <danmorg@sc.rr.com>
+
+       * OleDbDataReader.cs: implemented
+       Dispose() and GetEnumerator()
+       
index e7376875cb469d3e424c53dc223c78da76983707..d11afa9d9ab2f8bf32912bbc0d0b8d36e801642d 100644 (file)
@@ -26,6 +26,7 @@ namespace System.Data.OleDb
                private ArrayList gdaResults;
                private int currentResult;
                private int currentRow;
+               private bool disposed = false;
 
                #endregion
 
@@ -133,12 +134,6 @@ namespace System.Data.OleDb
                        currentRow = -1;
                }
 
-               ~OleDbDataReader ()
-               {
-                       if (open)
-                               Close ();
-               }
-
                public bool GetBoolean (int ordinal)
                {
                        IntPtr value;
@@ -604,16 +599,9 @@ namespace System.Data.OleDb
                        throw new NotImplementedException ();
                }
 
-               [MonoTODO]
-               void IDisposable.Dispose ()
-               {
-                       throw new NotImplementedException ();
-               }
-
-               [MonoTODO]
                IEnumerator IEnumerable.GetEnumerator ()
                {
-                       throw new NotImplementedException ();
+                       return new DbEnumerator (this);
                }
 
                public bool IsDBNull (int ordinal)
@@ -657,5 +645,38 @@ namespace System.Data.OleDb
                }
 
                #endregion
+
+               #region Destructors
+
+               private void Dispose (bool disposing) {
+                       if (!this.disposed) {
+                               if (disposing) {
+                                       // release any managed resources
+                                       command = null;
+                               }
+                               // release any unmanaged resources
+                               if (gdaResults != null) {
+                                       gdaResults.Clear ();
+                                       gdaResults = null;
+                               }
+
+                               // close any handles
+                               if (open)
+                                       Close ();
+
+                               this.disposed = true;   
+                       }
+               }
+
+               void IDisposable.Dispose() {
+                       Dispose (true);
+               }
+
+               ~OleDbDataReader() {
+                       Dispose (false);
+               }
+
+               #endregion // Destructors
+
        }
 }