2002-05-29 Rodrigo Moya <rodrigo@ximian.com>
authorRodrigo Moya <rodrigo@mono-cvs.ximian.com>
Wed, 29 May 2002 17:46:32 +0000 (17:46 -0000)
committerRodrigo Moya <rodrigo@mono-cvs.ximian.com>
Wed, 29 May 2002 17:46:32 +0000 (17:46 -0000)
* libgda.cs: static class for libgda API calls.

* OleDbConnection.cs: implemented constructors.
(ConnectionString, Connectiontimeout, Database, State):
implemented class properties.
(BeginTransaction): implemented.

* OleDbTransaction.cs: implemented protected constructors.

* TestGDA.cs: simple test for libgda API.

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

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

index f7b2f770d7baa2769da0cf81bc3a8b7a3aa32422..5451957092593534a03c66971279c946b7a05a2e 100644 (file)
@@ -1,3 +1,16 @@
+2002-05-29  Rodrigo Moya <rodrigo@ximian.com>
+
+       * libgda.cs: static class for libgda API calls.
+
+       * OleDbConnection.cs: implemented constructors.
+       (ConnectionString, Connectiontimeout, Database, State):
+       implemented class properties.
+       (BeginTransaction): implemented.
+
+       * OleDbTransaction.cs: implemented protected constructors.
+
+       * TestGDA.cs: simple test for libgda API.
+
 2002-05-27  Rodrigo Moya <rodrigo@ximian.com>
 
        Started System.Data.OleDb provider, based on libgda.
index 309db403382d79b7f46adaebb0ecbbc47f6f939f..d87d78d1c0b46d554e9c5303c0ed502aebe102a5 100644 (file)
@@ -15,5 +15,97 @@ namespace System.Data.OleDb
 {
        public sealed class OleDbConnection : Component, ICloneable, IDbConnection
        {
+               private IntPtr m_gdaClient = IntPtr.Zero;
+               private IntPtr m_gdaConnection = IntPtr.Zero;
+               private string m_string = "";
+               private int m_timeout = 15; // default is 15 seconds
+               
+               public OleDbConnection ()
+               {
+                       libgda.gda_init ("System.Data.OleDb", "0.1", 0, null);
+
+                       /* initialize our GDA client */
+                       m_gdaClient = libgda.gda_client_new ();
+               }
+
+               public OleDbConnection (string cnc_string) : this ()
+               {
+                       m_string = cnc_string;
+               }
+
+               string IDbConnection.ConnectionString
+               {
+                       get {
+                               return m_string;
+                       }
+                       set {
+                               m_string = value;
+                       }
+               }
+
+               int IDbConnection.ConnectionTimeout
+               {
+                       get {
+                               return m_timeout;
+                       }
+               }
+
+               string IDbConnection.Database
+               {
+                       get {
+                               if (m_gdaConnection != IntPtr.Zero
+                                   && libgda.gda_connection_is_open (m_gdaConnection)) {
+                                       return libgda.gda_connection_get_database (m_gdaConnection);
+                               }
+
+                               return null;
+                       }
+               }
+
+               public string DataSource
+               {
+                       get {
+                       }
+               }
+
+               public string Provider
+               {
+                       get {
+                       }
+               }
+
+               public string ServerVersion
+               {
+                       get {
+                       }
+               }
+
+               ConnectionState IDbConnection.State
+               {
+                       get {
+                               if (m_gdaConnection != IntPtr.Zero) {
+                                       if (libgda.gda_connection_is_open (m_gdaConnection))
+                                               return ConnectionState.Open;
+                               }
+
+                               return ConnectionState.Closed;
+                       }
+               }
+
+               public OleDbTransaction BeginTransaction ()
+               {
+                       if (m_gdaConnection != IntPtr.Zero)
+                               return new OleDbTransaction (this);
+
+                       return null;
+               }
+
+                public OleDbTransaction BeginTransaction (IsolationLevel level)
+                {
+                        if (m_gdaConnection != IntPtr.Zero)
+                               return new OleDbTransaction (this, level);
+
+                       return null;
+                }
        }
 }
index a01a306adb7561b9427de54d829ab09c81a708fd..4a656f70c9f699882e9cfe7f249c60525f72f50d 100644 (file)
@@ -15,5 +15,17 @@ namespace System.Data.OleDb
        public sealed class OleDbTransaction : MarshalByRefObject,
                IDbTransaction, IDisposable
        {
+               private OleDbConnection m_connection = null;
+               
+               protected OleDbTransaction (OleDbConnection cnc)
+               {
+                       m_connection = null;
+               }
+
+               protected OleDbTransaction (OleDbConnection cnc,
+                                           IsolationLevel level) : this (cnc)
+               {
+                       /* FIXME: use 'level' parameter */
+               }
        }
 }
diff --git a/mcs/class/System.Data/System.Data.OleDb/TestGDA.cs b/mcs/class/System.Data/System.Data.OleDb/TestGDA.cs
new file mode 100644 (file)
index 0000000..19eea66
--- /dev/null
@@ -0,0 +1,32 @@
+using System;
+using System.Data.OleDb;
+
+namespace Mono.Data.GDA.Test
+{
+       public class TestGDA
+       {
+               private IntPtr m_gdaClient = IntPtr.Zero;
+               private IntPtr m_gdaConnection = IntPtr.Zero;
+               
+               static void Main (string[] args)
+               {
+                       TestGDA test = new TestGDA ();
+                       
+                       /* initialization */
+                       libgda.gda_init ("TestGDA#", "0.1", args.Length, args);
+                       test.m_gdaClient = libgda.gda_client_new ();
+
+                       /* open connection */
+                       test.m_gdaConnection = libgda.gda_client_open_connection (
+                               test.m_gdaClient,
+                               "PostgreSQL",
+                               "", "");
+                       if (test.m_gdaConnection != IntPtr.Zero) {
+                               System.Console.Write ("Connection successful!");
+
+                               /* close connection */
+                               libgda.gda_connection_close (test.m_gdaConnection);
+                       }
+               }       
+       }
+}
diff --git a/mcs/class/System.Data/System.Data.OleDb/libgda.cs b/mcs/class/System.Data/System.Data.OleDb/libgda.cs
new file mode 100644 (file)
index 0000000..533eee9
--- /dev/null
@@ -0,0 +1,42 @@
+//
+// System.Data.OleDb.libgda
+//
+// Author:
+//   Rodrigo Moya (rodrigo@ximian.com)
+//
+// Copyright (C) Rodrigo Moya, 2002
+//
+
+using System.Data;
+using System.Data.Common;
+using System.Runtime.InteropServices;
+
+namespace System.Data.OleDb
+{
+       sealed internal class libgda
+       {
+               [DllImport("gda-2")]
+               public static extern void gda_init (string app_id,
+                                                   string version,
+                                                   int nargs,
+                                                   string[] args);
+
+               [DllImport("gda-2")]
+               public static extern IntPtr gda_client_new ();
+
+               [DllImport("gda-2")]
+               public static extern IntPtr gda_client_open_connection (IntPtr client,
+                                                                       string dsn,
+                                                                       string username,
+                                                                       string password);
+
+               [DllImport("gda-2")]
+               public static extern bool gda_connection_is_open (IntPtr cnc);
+               
+               [DllImport("gda-2")]
+               public static extern bool gda_connection_close (IntPtr cnc);
+
+               [DllImport("gda-2")]
+               public static extern string gda_connection_get_database (IntPtr cnc);
+       }
+}