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

Classe pronta para acesso ao MS SqlServer em C#(CSharp).


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

Conexão com MS SqlServer

Com esta Classe 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 MS SqlServer no arquivo Web.Config

<configuration>
  <connectionStrings>
        <add name="SqlServer" providerName="System.Data.SqlClient" connectionString="Server=localhost,1433;Database=MeuBancoDados;User ID=sa;Password=123456" />
  </connectionStrings>
</configuration>


Segue nossa Classe para acesso ao SqlServer, 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 SqlServer

/* 
 * Classe acesso MS SqlServer
 * 
 * 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 System.Data.SqlClient;

public class Conexao
{

    public string mErro = "";


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

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


    public SqlConnection 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},1433;Database={1};User ID={2};Password={3}", this.Server, this.Database, this.Usuario, this.Senha);
            }
            else
            {
                connectionStrings = getWebConfig(this.ConexaoWebConfig);
            }

            this.conn = new SqlConnection(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 SqlServer.

Exemplo de uso de nossa Classe

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

    // Instancia nossa Conexao
    Conexao conexao = new Conexao(TipoConexao.Conexao.WebConfig);

    // Se existe erro na conexao move o erro para a classe de acesso 
    if (conexao.ExisteErro())
    {
        setMensagemErro(conexao.mErro);
        return listaCursos ;
    }
          
    try
    {
        SqlDataReader reader;
        string query = "select * from cursos";
        SqlCommand cmd = new SqlCommand(query, conexao.conn);
        cmd.CommandType = System.Data.CommandType.Text;

        // Abre nossa Conexao
        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 (SqlException e)
    {
        setMensagemErro(e.Message.ToString());
    }

    // Fecha nossa Conexao
    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.



Comentários