Exemple #1
0
        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());
            }
        }
Exemple #2
0
        /// <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);
            }
        }
Exemple #3
0
        /// <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);
        }