Jelajahi Sumber

2002-06-01 Rodrigo Moya <[email protected]>

	* 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
Rodrigo Moya 23 tahun lalu
induk
melakukan
63f8641786

+ 18 - 0
mcs/class/System.Data/System.Data.OleDb/ChangeLog

@@ -1,3 +1,21 @@
+2002-06-01  Rodrigo Moya <[email protected]>
+
+	* 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 <[email protected]>
 
 	* libgda.cs: added static constructor.

+ 83 - 5
mcs/class/System.Data/System.Data.OleDb/OleDbConnection.cs

@@ -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;
 	}
 }

+ 20 - 0
mcs/class/System.Data/System.Data.OleDb/TestOleDb.cs

@@ -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 ();
+		}
+	}
+}

+ 15 - 0
mcs/class/System.Data/System.Data.OleDb/libgda.cs

@@ -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);
 	}
 }