2002-06-01 Rodrigo Moya <rodrigo@ximian.com>
authorRodrigo Moya <rodrigo@mono-cvs.ximian.com>
Sat, 1 Jun 2002 21:32:56 +0000 (21:32 -0000)
committerRodrigo Moya <rodrigo@mono-cvs.ximian.com>
Sat, 1 Jun 2002 21:32:56 +0000 (21:32 -0000)
* libgda.cs: added new libgda API functions.

* OleDbConnection.cs (Provider): implemented.
(BeginTransaction): made it overload IDbConnection methods.
(ChangeDatabase): new stub, needs some work on libgda for being
implemented.
(Clone): new stub.
(Close): implemented.
(CreateCommand): implemented.
(GetOleDbSchemaTable): new stub, until I understand what to do here.
(Open): implemented basic stuff, which is just supporting connection
strings that represent a GDA data source name. More to come.
(InfoMessage, StateChange): added events.

* TestOleDb.cs: test program for System.Data.OleDb.

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

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

index 66dc185122e78272f4942f08367053f9fdd07229..a7745b8d7f93d22773eb90ed5ff14a98114f1ef6 100644 (file)
@@ -1,3 +1,21 @@
+2002-06-01  Rodrigo Moya <rodrigo@ximian.com>
+
+       * libgda.cs: added new libgda API functions.
+
+       * OleDbConnection.cs (Provider): implemented.
+       (BeginTransaction): made it overload IDbConnection methods.
+       (ChangeDatabase): new stub, needs some work on libgda for being
+       implemented.
+       (Clone): new stub.
+       (Close): implemented.
+       (CreateCommand): implemented.
+       (GetOleDbSchemaTable): new stub, until I understand what to do here.
+       (Open): implemented basic stuff, which is just supporting connection
+       strings that represent a GDA data source name. More to come.
+       (InfoMessage, StateChange): added events.
+
+       * TestOleDb.cs: test program for System.Data.OleDb.
+
 2002-05-29  Rodrigo Moya <rodrigo@ximian.com>
 
        * libgda.cs: added static constructor.
index 33e9820366e388479cc6734d46096ab08b86b388..0397a0976f4806d21fa1aa2b75b724839f58859d 100644 (file)
@@ -10,6 +10,7 @@
 using System.ComponentModel;
 using System.Data;
 using System.Data.Common;
+using System.Exception;
 
 namespace System.Data.OleDb
 {
@@ -18,11 +19,19 @@ namespace System.Data.OleDb
                private IntPtr m_gdaConnection = IntPtr.Zero;
                private string m_string = "";
                private int m_timeout = 15; // default is 15 seconds
+
+               /*
+                * Constructors
+                */
                
                public OleDbConnection ()
                {
                }
 
+               /*
+                * Properties
+                */
+               
                public OleDbConnection (string cnc_string) : this ()
                {
                        m_string = cnc_string;
@@ -59,19 +68,29 @@ namespace System.Data.OleDb
 
                public string DataSource
                {
+                       [MonoTODO]
                        get {
+                               throw new NotImplementedException ();
                        }
                }
 
                public string Provider
                {
                        get {
+                               if (m_gdaConnection != IntPtr.Zero
+                                   && libgda.gda_connection_is_open (m_gdaConnection)) {
+                                       return libgda.gda_connection_get_provider (m_gdaConnection);
+                               }
+
+                               return null;
                        }
                }
 
                public string ServerVersion
                {
+                       [MonoTODO]
                        get {
+                               throw new NotImplementedException ();
                        }
                }
 
@@ -87,7 +106,11 @@ namespace System.Data.OleDb
                        }
                }
 
-               public OleDbTransaction BeginTransaction ()
+               /*
+                * Methods
+                */
+               
+               IDbTransaction IDbConnection.BeginTransaction ()
                {
                        if (m_gdaConnection != IntPtr.Zero)
                                return new OleDbTransaction (this);
@@ -95,12 +118,67 @@ namespace System.Data.OleDb
                        return null;
                }
 
-                public OleDbTransaction BeginTransaction (IsolationLevel level)
-                {
-                        if (m_gdaConnection != IntPtr.Zero)
+               IDbTransaction IDbConnection.BeginTransaction (IsolationLevel level)
+               {
+                       if (m_gdaConnection != IntPtr.Zero)
                                return new OleDbTransaction (this, level);
 
                        return null;
-                }
+               }
+
+               void IDbConnection.ChangeDatabase (string name)
+               {
+                       // FIXME: see http://bugzilla.gnome.org/show_bug.cgi?id=83315
+               }
+
+               [MonoTODO]
+               object ICloneable.Clone ()
+               {
+                       throw new NotImplementedException();
+               }
+               
+               void IDbConnection.Close ()
+               {
+                       if (m_gdaConnection != IntPtr.Zero) {
+                               libgda.gda_connection_close (m_gdaConnection);
+                               m_gdaConnection = IntPtr.Zero;
+                       }
+               }
+
+               IDbCommand IDbConnection.CreateCommand ()
+               {
+                       if (m_gdaConnection != IntPtr.Zero
+                           && libgda.gda_connection_is_open (m_gdaConnection)) {
+                               return new OleDbCommand ();
+                       }
+
+                       return null;
+               }
+
+               [MonoTODO]
+               public DataTable GetOleDbSchemaTable (Guid schema,
+                                                     object[] restrictions)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               void IDbConnection.Open ()
+               {
+                       if (m_gdaConnection != IntPtr.Zero ||
+                           libgda.gda_connection_is_open (m_gdaConnection))
+                               throw new InvalidOperationException ();
+
+                       m_gdaConnection = libgda.gda_client_open_connection (
+                               libgda.GdaClient,
+                               m_string,
+                               "", "");
+               }
+
+               /*
+                * Events
+                */
+               
+               public event OleDbInfoMessageEventHandler InfoMessage;
+               public event StateChangeEventHandler StateChange;
        }
 }
diff --git a/mcs/class/System.Data/System.Data.OleDb/TestOleDb.cs b/mcs/class/System.Data/System.Data.OleDb/TestOleDb.cs
new file mode 100644 (file)
index 0000000..8b63827
--- /dev/null
@@ -0,0 +1,20 @@
+using System;
+using System.Data.OleDb;
+
+namespace System.Data.OleDb.Test
+{
+       public class TestOleDb
+       {
+               private OleDbConnection m_cnc;
+               
+               private TestOleDb ()
+               {
+                       m_cnc = new OleDbConnection ("PostgreSQL");
+               }
+               
+               static void Main (string[] args)
+               {
+                       TestOleDb test = new TestOleDb ();
+               }
+       }
+}
index 4b454a3353c07df059b906ce2b8fabd902fd238b..ac1d7371cd1d73e4118e37cafab42257533333b7 100644 (file)
@@ -55,5 +55,20 @@ namespace System.Data.OleDb
 
                [DllImport("gda-2")]
                public static extern string gda_connection_get_database (IntPtr cnc);
+
+               [DllImport("gda-2")]
+               public static extern string gda_connection_get_dsn (IntPtr cnc);
+
+               [DllImport("gda-2")]
+               public static extern string gda_connection_get_cnc_string (IntPtr cnc);
+
+               [DllImport("gda-2")]
+               public static extern string gda_connection_get_provider (IntPtr cnc);
+
+               [DllImport("gda-2")]
+               public static extern string gda_connection_get_username (IntPtr cnc);
+
+               [DllImport("gda-2")]
+               public static extern string gda_connection_get_password (IntPtr cnc);
        }
 }