Conexão Mysql + ASP.NET

using System;
using System.Data;
using MySql.Data.MySqlClient;

namespace sgdc
{
    /// <summary>
    /// Classe para manipulação de acesso a dados do banco de dados Mysql
    /// </summary>
      
    public class mysql
    {
        MySqlConnection _conexao;
        MySqlCommand _comando;
        MySqlTransaction _transacao;
        bool _gerenciarConexaoAutomatica = true;

        /// <summary>
        /// Objeto SqlCommand para execução de instruções SQL.
        /// </summary>
        public MySqlCommand Comando
        {
            get { return _comando; }
            set { _comando = value; }
        }
        /// <summary>
        /// Retorna o objeto de conexão tipo SqlConnection.
        /// </summary>
        public MySqlConnection Conexao
        {
            get { return _conexao; }
        }

        /// <summary>
        /// Retorna o objeto de transação tipo SqlTransaction.
        /// </summary>
        public MySqlTransaction Transacao
        {
            get { return _transacao; }
        }
        /// <summary>
        /// Inicia uma transação com o banco de dados. A conexão será aberta caso esteja fechada e o objeto Comando ligado a transação.
        /// </summary>
        public bool GerenciarConexaoAutomatica
        {
            get { return _gerenciarConexaoAutomatica; }
            set { _gerenciarConexaoAutomatica = value; }
        }
      
        /// <summary>
        /// Construtor da classe.
        /// </summary>
        public mysql()
        {
            _conexao = new MySqlConnection();
            _conexao.ConnectionString = "server=;uid=;pwd=;database=";
            _comando = _conexao.CreateCommand();
        }
        /// <summary>
        /// Construtor da classe.
        /// </summary>
        /// <param name="gerenciaConexaoAutomatica">Indica se o a conexão do banco de será automaticamente gerenciada.</param>
        public mysql(bool gerenciaConexaoAutomatica)
        {
            _conexao = new MySqlConnection();
            _conexao.ConnectionString = "server=;uid=;pwd=;database="";
            _comando = _conexao.CreateCommand();
            _gerenciarConexaoAutomatica = gerenciaConexaoAutomatica;
        }
      
        /// <summary>
        /// Abre a conexão com o banco de dados.
        /// </summary>
        public void AbrirConexao()
        {
            if (_conexao.State == ConnectionState.Closed)
                _conexao.Open();
        }/// <summary>
        /// Fecha a conexão com o banco de dados.
        /// </summary>
        public void FecharConexao()
        {
            if (_conexao.State == ConnectionState.Open)
                _conexao.Close();
        }

        /// <summary>
        /// Inicia uma transação com o banco de dados. A conexão será aberta caso esteja fechada.
        /// </summary>
        public void IniciarTransacao()
        {
            if (_conexao.State == ConnectionState.Closed)
                _conexao.Open();

            _transacao = _conexao.BeginTransaction();
            _comando.Transaction = _transacao;
        } /// <summary>
        /// Executa o objeto Comando (SqlCommand) com uma instrução Select.
        /// </summary>
        /// <returns>Retorna um objeto DataTable com o resultado da consulta.</returns>
        public DataTable ExecutarComando()
        {
            if (_comando.CommandText == string.Empty)
                throw new Exception("Comando sem instrução SQL.");

            DataTable dt = new DataTable();

            try
            {
                if (_conexao.State == ConnectionState.Closed)
                    _conexao.Open();

                MySqlDataReader dr = _comando.ExecuteReader();

                dt.Load(dr);
            }
            catch (Exception ex)
            {

                if (_transacao != null)
                {
                    _transacao.Rollback();
                    _transacao = null;
                }

                if (_conexao.State == ConnectionState.Open)
                    _conexao.Close();

                throw new Exception("Erro em Bancos.SqlServer.ExecutarComando.", ex);
            }
            finally
            {
                if (_gerenciarConexaoAutomatica)
                    _conexao.Close();
            }

            return (dt);
        }
        /// <summary>
        /// Executa o objeto Comando (SqlCommand) com uma instrução Select.
        /// </summary>
        /// <param name="sql">Instrução SELECT</param>
        /// <returns></returns>
        public DataTable ExecutarComando(string sql)
        {
            _comando.CommandText = sql;
            return (ExecutarComando());
        }

        /// <summary>
        /// Executa o objeto Comando (SqlCommand) com uma instrução SQL Scalar.
        /// </summary>
        /// <returns>Retorna um objeto do tipo Object, sendo possível ser convertido para qualquer tipo de dado.</returns>

        public object ExecutarComandoScalar()
        {
            if (_comando.CommandText == string.Empty)
                throw new Exception("Comando sem instrução SQL.");

            object retorno = 0;

            try
            {
                if (_conexao.State == ConnectionState.Closed)
                    _conexao.Open();

                retorno = _comando.ExecuteScalar();

            }
            catch (Exception ex)
            {

                if (_transacao != null)
                {
                    _transacao.Rollback();
                    _transacao = null;
                }

                if (_conexao.State == ConnectionState.Open)
                    _conexao.Close();

                throw new Exception("Erro em Bancos.SqlServer.ExecutarComandoScalar.", ex);
            }
            finally
            {
                if (_gerenciarConexaoAutomatica)
                    _conexao.Close();
            }

            return (retorno);
        }

        /// <summary>
        /// Executa o objeto Comando (SqlCommand) com uma instrução SQL Scalar.
        /// </summary>
        /// <param name="sql">Instrução SELECT</param>
        /// <returns>Retorna um objeto do tipo Object, sendo possível ser convertido para qualquer tipo de dado.</returns>
        public object ExecutarComandoScalar(string sql)
        {
            _comando.CommandText = sql;
            return (ExecutarComandoScalar());
        }

        /// <summary>
        /// Executa o objeto Comando (SqlCommand) com uma instrução Insert, Update ou Delete, ou ainda execução de StoredProcedure.
        /// </summary>
        /// <returns>Retorna o número de linhas afetadas durante a execução.</returns>
        public int ExecutarComandoNonQuery()
        {
            if (_comando.CommandText == string.Empty)
                throw new Exception("Comando sem instrução SQL.");

            int linhasAfetadas = 0;

            try
            {
                if (_conexao.State == ConnectionState.Closed)
                    _conexao.Open();

                linhasAfetadas = _comando.ExecuteNonQuery();

            }
            catch (Exception ex)
            {

                if (_transacao != null)
                {
                    _transacao.Rollback();
                    _transacao = null;
                }


                if (_conexao.State == ConnectionState.Open)
                    _conexao.Close();

                throw new Exception("Erro em Bancos.SqlServer.ExecutaComandoNonQuery.", ex);
            }
            finally
            {
                if (_gerenciarConexaoAutomatica)
                    _conexao.Close();
            }

            return (linhasAfetadas);
        }
        /// <summary>
        ///  Executa o objeto Comando (SqlCommand) com uma instrução Insert, Update ou Delete, ou ainda execução de StoredProcedure.
        /// </summary>
        /// <param name="sql">Instrução Insert, Update ou Delete</param>
        /// <returns>Retorna o número de linhas afetadas durante a execução.</returns>
        public int ExecutarComandoNonQuery(string sql)
        {
            _comando.CommandText = sql;
            return (ExecutarComandoNonQuery());
        }
    }
}

Nenhum comentário:

Postar um comentário