* 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
+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.
{
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;
+ }
}
}
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 */
+ }
}
}
--- /dev/null
+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);
+ }
+ }
+ }
+}
--- /dev/null
+//
+// 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);
+ }
+}