quinta-feira, 5 de agosto de 2010

Criando uma classe de conexão para suas aplicações Windows Forms e SQL Server

Nesta dica vou mostrar como criar uma classe de conexão que pode ser reaproveitada em suas aplicações Windows Forms, C# e SQL Server. A vantagem de se usar uma classe de conexão e concentrar a string de conexão, os métodos de abertura e fechamento da conexão em uma só classe possibilita modificações rápidas e de pouco impacto no restante do código da aplicação.

Para criar a classe de conexão siga atentamente os passos abaixo:

a) Clique com o botão direito no nome do projeto no Solution Explorer, escolha a opção Add -> Class;

b) Dê o nome "Conexao" para a classe e modifique-a para ficar parecida com o código abaixo:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace NamespaceDeSuaAplicacao{
  class Conexao{
    // vamos nos conectar ao SQL Server Express e à base de dados
    // locadora usando Windows Authentication
    private static string connString = @"server = .\sqlexpress;
    Database = locadora;
    integrated security = true;";

    // representa a conexão com o banco
    private static SqlConnection conn = null;   

    // método que permite obter a conexão
    public static SqlConnection obterConexao(){
      // vamos criar a conexão
      conn = new SqlConnection(connString);

      // a conexão foi feita com sucesso?
      try{
        // abre a conexão e a devolve ao chamador do método
        conn.Open();
      }
      catch(SqlException sqle){
        conn = null;
        // ops! o que aconteceu?
        // uma boa idéia aqui é gravar a exceção em um arquivo de log
      }

      return conn;
    }

    public static void fecharConexao(){
      if(conn != null){
        conn.Close();
      }
    }
  }
}

Note que os métodos desta classe são estáticos, o que nos permite chamá-los a partir de outras classe sem a necessidade de criarmos novos objetos da classe Conexao. Veja, por exemplo, como usar os métodos obterConexao() e fecharConexao() de nossa recém-criada classe a partir do evento Click de um botão (este botão poderia estar localizado em um formulário de cadastro):

private void button1_Click(object sender, EventArgs e){
  // vamos obter a conexão com o banco de dados
  SqlConnection conn = Conexao.obterConexao();

  // a conexão foi efetuada com sucesso?
  if(conn == null){
    MessageBox.Show("Não foi possível obter a conexão. Veja o log de erros.");   
  }
  else{
    MessageBox.Show("A conexão foi obtida com sucesso.");
  }

  // não precisamos mais da conexão? vamos fechá-la
  Conexao.fecharConexao();
}
by:splinter

0 comentários: