Classe para fazer Conexão MySql em C#(CSharp)

Autor : Antonio Carlos Ferreira de Azevedo
Postado em : 19/07/2016

Conexão com MySql


Atenção: Se não sabe como integrar o MySql a sua aplicação, primeiro visite o link abaixo:


Agora vamos a nossa Classe, com ela podemos acessar nossa connectionStrings tanto de nosso arquivo Web.Config como configurar os dados de acesso diretamente em nossa Classe.

Instanciando nossa Classe

Podemos instanciar nossa Classe de duas maneiras
Conexao(TipoConexao.Conexao.WebConfig) quando queremos que os dados de nossa conexão venha da connectionStrings de nosso Web.Config
Conexao(TipoConexao.Conexao.Classe)quando queremos que os dados de nossa conexão venha dos dados configurados em nossa Classe

Configurando os dados da conexão em nossa Classe

ConexaoWebConfig o nome de nossa connectionStrings criada em nosso Web.Config
Server o nome de nosso servidor, se estiver em uma conexão local utilize localhost
Database o nome de nosso banco de dados
Usuario o nome do usuário de acesso ao bando de dados
Senha a senha de acesso ao banco de dados

Exemplo de string de conexão para MySql no arquivo Web.Config

<configuration>
  <connectionStrings>
    <add name="MySQL" providerName="System.Data.SqlClient" connectionString="server=localhost ;user id=root;pwd='123456';database=Escola;Connect Timeout=28800;Command Timeout=2880" />  
  </connectionStrings>
</configuration>


Segue nossa Classe para acesso ao MySql, crie um arquivo com o nome de Conexao.cs em seu projeto, copie e cole o código abaixo:

Classe para fazer a conexão com MS MySql

/* 
 * Classe acesso MySql
 * 
 * Visite nossa página http://www.codigoexpresso.com.br
 * 
 * by Antonio Azevedo
 *  
 * Instanciando a Classe
 *    Conexao(TipoConexao.Conexao.WebConfig) -> Lendo string conexao do arquivo Web.Config
 *    Conexao(TipoConexao.Conexao.Classe)    -> Lendo dados da conexao de nossa classe
 *
 * Configurando nossa Classe
 *    ConexaoWebConfig - > Nome da connectionStrings de nosso arquivo Web.Config
 *    Server           - > Nome do servidor, se estiver usando conexao local utilize ´localhost´
 *    Database         - > Nome do Banco de Dados
 *    Usuario          - > Nome do usuário de Acesso ao Banco de Dados
 *    Senha            - > Senha de Acesso ao Banco de Dados
 * 
 */
using System;
using MySql.Data.MySqlClient;

public class Conexao
{

    public string mErro = "";


    // Variavel de definição para acesso a connectionStrings do Web.Config
    private string ConexaoWebConfig = "MySql";

    // Variaveis de configuração de acesso ao banco de dados
    private string Server = "localhost";
    private string Database = "Escola";
    private string Usuario = "root";
    private string Senha = "123456";


    public MySqlConnection conn;

    public Conexao(TipoConexao.Conexao TConexao)
    {
        GetConexao(TConexao);
    }
    public Conexao()
    {
        GetConexao(TipoConexao.Conexao.Classe);
    }

    // Verifica se existe erro
    public Boolean ExisteErro()
    {
        if (mErro.Length > 0)
        {
            return true;
        }
        return false;
    }
  
    // Faz a Conexao com o Banco de Dados
    private void GetConexao(TipoConexao.Conexao TConexao)
    {
        try
        {
            string connectionStrings = "";
            if (TConexao == TipoConexao.Conexao.Classe)
            {
                connectionStrings = string.Format("server={0} ;user id={2};pwd='{3}';database={1};Connect Timeout=28800;Command Timeout=2880", this.Server, this.Database, this.Usuario, this.Senha);
            }
            else
            {
                connectionStrings = getWebConfig(this.ConexaoWebConfig);
            }

            this.conn = new MySqlConnection(connectionStrings);
        }
        catch (Exception erro)
        {
            this.mErro = erro.Message;
            this.conn = null;
        }
    }

    // Abre conexao com o Banco de Dados
    public Boolean OpenConexao()
    {
        Boolean _return = true;
        try
        {
            conn.Open();
        }
        catch (Exception erro)
        {
            this.mErro = erro.Message;
            _return = false;
        }

        return _return;
    }

    // Fecha conexao com o Banco de Dados
    public void CloseConexao()
    {
        conn.Close();
        conn.Dispose();
    }

    /// <summary>
    /// 
    /// </summary>
    /// <param name="Variavel"></param>
    /// <returns></returns>
    public string getWebConfig(string Variavel)
    {
        string strValue = "";
        System.Configuration.Configuration rootWebConfig =
            System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~/");
        System.Configuration.ConnectionStringSettings connString;
        if (0 < rootWebConfig.ConnectionStrings.ConnectionStrings.Count)
        {
            connString = rootWebConfig.ConnectionStrings.ConnectionStrings[Variavel];
            if (null != connString)
                strValue = connString.ConnectionString;
            else
                strValue = "erro";
        }

        return strValue;
    }
}

/// <summary>
/// Definição de tipos de Conexão 
/// </summary>
public class TipoConexao
{
    public enum Conexao { WebConfig = 1, Classe = 2 };
}


Agora para que tudo fique mais claro, segue exemplo de consulta utilizando nossa Classe Conexao.cs para MySql.

Exemplo de uso de nossa Classe

public List<Curso>  ListaTodosCursos()
{
    List<Curso> listaCursos = new List<Curso>();
    Curso curso = new Curso();

    Conexao conexao = new Conexao(TipoConexao.Conexao.Classe);

    if (conexao.mErro.Length > 0)
    {
        setMensagemErro(conexao.mErro);
        return null;
    }
          
    try
    {
        MySqlDataReader reader;
        string query = "select * from cursos";
        MySqlCommand cmd = new MySqlCommand(query, conexao.conn);
        cmd.CommandType = System.Data.CommandType.Text;

        if (conexao.OpenConexao()==false)
        {
            setMensagemErro(conexao.mErro);
            return null;
        }

        reader = cmd.ExecuteReader();

        while (reader.Read())
        {
            curso = new Curso();

            curso.idaluno = Convert.ToInt32(reader["idcurso"]);
            curso.descricao = (string)reader["descricao"];               

            listaCursos.Add(curso);
        }
    }
    catch (MySqlException e)
    {
        setMensagemErro(e.Message.ToString());
    }

    conexao.CloseConexao();

    return listaCursos;

}

Obs: Não fique preso aos detalhes deste exemplo e a maneira com que a rotina foi montado, este exemplo server simplesmente para mostrar a forma de uso de nossa Classe Conexão.cs, mais adiante iremos postar um exemplo de Classe para acesso aos dados.

Baixa no link abaixo a ultima versão do MySQL diretamente do site oficial






Comentários