public static MySqlInternalConnection GetConnection(MySqlConnectionString settings) { // make sure the manager is initialized if (MySqlPoolManager.pools == null) { MySqlPoolManager.Initialize(); } string text = settings.GetConnectionString(); lock (pools.SyncRoot) { MySqlPool pool; if (!pools.Contains(text)) { pool = new MySqlPool(settings); pools.Add(text, pool); } else { pool = (pools[text] as MySqlPool); } return(pool.GetConnection()); } }
/// <summary> /// Opens a database connection with the property settings specified by the ConnectionString. /// </summary> public void Open() { if (state == ConnectionState.Open) { throw new MySqlException("error connecting: The connection is already Open (state=Open)."); } SetState(ConnectionState.Connecting); try { if (settings.Pooling) { internalConnection = MySqlPoolManager.GetConnection(settings); } else { internalConnection = new MySqlInternalConnection(settings); internalConnection.Open(); } } catch (Exception ex) { SetState(ConnectionState.Closed); throw ex; } SetState(ConnectionState.Open); internalConnection.SetServerVariables(this); if (settings.Database != null && settings.Database != String.Empty) { ChangeDatabase(settings.Database); } }
/// <summary> /// Closes the connection to the database. This is the preferred method of closing any open connection. /// </summary> public void Close() { if (state == ConnectionState.Closed) { return; } if (dataReader != null) { dataReader.Close(); } if (settings.Pooling) { MySqlPoolManager.ReleaseConnection(internalConnection); } else { internalConnection.Close(); } SetState(ConnectionState.Closed); }