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

7 comentários:

Marcio disse...

Muito bom... parabéns!! Me ajudou!

Jorge Farinha disse...

Obrigado...Foi uma ajuda..
Fiz Assim:

using System.Data.SqlClient;
using System.Windows.Forms;

namespace omeunamespace
{
class Conexao
{
public static SqlConnection obterConexaoSQL()
{
// Definir os atributos da Conexão com o Connection String Builder
SqlConnectionStringBuilder csb = new SqlConnectionStringBuilder();
// Definir os atributos da conexão
csb.DataSource = "(local)\\sqlserver"; // Instância SQL
csb.InitialCatalog = "teste"; // nome da BD
csb.IntegratedSecurity = true;

// Criar a Conexão
SqlConnection connection = new SqlConnection(csb.ConnectionString);

try // a conexão foi feita com sucesso?
{
connection.Open(); // abre a conexão
}
catch (SqlException _e)
{
MessageBox.Show("Erro : " + _e.Message, "Erro de Conexão", MessageBoxButtons.OKCancel, MessageBoxIcon.Error);
}
return connection;
} // método obterConexaoSQL()

} // class Conexao
}

Consciência Livre disse...

Não sei se você acredita em Deus, mas Ele vai te dar muito mais bençãos.

Unknown disse...

cara valeu! Ajudou muito..

Unknown disse...

Tem como fazer um vídeo?explicando tudo, estou tendo um erro aqui ao tentar fazer o login.

marco oliveira disse...

Nossa, muito bom tutorial me ajudou muito, parabéns

Anônimo disse...

boa