2 // System.Data.OleDb.OleDbConnection
5 // Rodrigo Moya (rodrigo@ximian.com)
6 // Tim Coleman (tim@timcoleman.com)
8 // Copyright (C) Rodrigo Moya, 2002
9 // Copyright (C) Tim Coleman, 2002
12 using System.ComponentModel;
14 using System.Data.Common;
16 namespace System.Data.OleDb
18 public sealed class OleDbConnection : Component, ICloneable, IDbConnection
22 string connectionString;
23 int connectionTimeout;
24 OleDbDataReader dataReader;
32 public OleDbConnection ()
34 libgda.gda_init ("System.Data.OleDb", "1.0", 0, new string [0]);
35 gdaConnection = IntPtr.Zero;
36 connectionTimeout = 15;
37 connectionString = null;
40 public OleDbConnection (string connectionString) : this ()
42 this.connectionString = connectionString;
45 #endregion // Constructors
49 public string ConnectionString {
51 return connectionString;
54 connectionString = value;
58 public int ConnectionTimeout {
60 return connectionTimeout;
64 public string Database {
66 if (gdaConnection != IntPtr.Zero
67 && libgda.gda_connection_is_open (gdaConnection)) {
68 return libgda.gda_connection_get_database (gdaConnection);
75 public string DataSource {
77 if (gdaConnection != IntPtr.Zero
78 && libgda.gda_connection_is_open (gdaConnection)) {
79 return libgda.gda_connection_get_dsn (gdaConnection);
86 public string Provider {
88 if (gdaConnection != IntPtr.Zero
89 && libgda.gda_connection_is_open (gdaConnection)) {
90 return libgda.gda_connection_get_provider (gdaConnection);
97 public string ServerVersion {
100 throw new NotImplementedException ();
104 public ConnectionState State
107 if (gdaConnection != IntPtr.Zero) {
108 if (libgda.gda_connection_is_open (gdaConnection))
109 return ConnectionState.Open;
112 return ConnectionState.Closed;
116 internal IntPtr GdaConnection
119 return gdaConnection;
123 #endregion // Properties
127 public OleDbTransaction BeginTransaction ()
129 if (gdaConnection != IntPtr.Zero)
130 return new OleDbTransaction (this);
135 IDbTransaction IDbConnection.BeginTransaction ()
137 return BeginTransaction ();
140 public OleDbTransaction BeginTransaction (IsolationLevel level)
142 if (gdaConnection != IntPtr.Zero)
143 return new OleDbTransaction (this, level);
148 IDbTransaction IDbConnection.BeginTransaction (IsolationLevel level)
150 return BeginTransaction (level);
153 public void ChangeDatabase (string name)
155 // FIXME: see http://bugzilla.gnome.org/show_bug.cgi?id=83315
160 if (gdaConnection != IntPtr.Zero) {
161 libgda.gda_connection_close (gdaConnection);
162 gdaConnection = IntPtr.Zero;
166 public OleDbCommand CreateCommand ()
168 if (gdaConnection != IntPtr.Zero
169 && libgda.gda_connection_is_open (gdaConnection))
170 return new OleDbCommand (null, this);
176 protected override void Dispose (bool disposing)
178 throw new NotImplementedException ();
182 public DataTable GetOleDbSchemaTable (Guid schema, object[] restrictions)
184 throw new NotImplementedException ();
188 object ICloneable.Clone ()
190 throw new NotImplementedException();
193 IDbCommand IDbConnection.CreateCommand ()
195 return CreateCommand ();
200 if (State == ConnectionState.Open)
201 throw new InvalidOperationException ();
203 gdaConnection = libgda.gda_client_open_connection (libgda.GdaClient,
209 public static void ReleaseObjectPool ()
211 throw new NotImplementedException ();
216 #region Events and Delegates
218 public event OleDbInfoMessageEventHandler InfoMessage;
219 public event StateChangeEventHandler StateChange;