Classe Conexão C#

25/08/2010

0

Olá Pessoal,
 estou iniciando um projeto no meu trabalho do 0, e eu estou precisando de uma boa prática de programação para construir uma classe de conexão e como usa-la, alguém poderia me ajudar ? :)

Atenciosamente,

 Eduardo
Eduardo Siqueira

Eduardo Siqueira

Responder

Posts

25/08/2010

Anderson Peluso

using System;
using System.Data.SqlClient;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;

namespace PowerAPF.powerAPFDAO
{
    public class usuarioDAO
    {
        /// <summary>
        /// Metodo responsável por incluir os usuários no banco
        /// </summary>
        /// <param name="nome">Nome do usuário</param>
        /// <param name="login">Login do usuário</param>
        /// <param name="senha">Senha do usuário</param>
        public void incluirUsuario(string nome, string login, string senha)
        {

            SqlConnection conexao = new SqlConnection(@"Data Source=ELTON-PC;Initial Catalog=dbPowerAPF; User Id=usr_app; Password=usr_app");

            SqlCommand cmd =
                new SqlCommand("insert into GER_USUARIO (usr_login, usr_senha, usr_nome) values (@login,@senha,@nome)", conexao);

            cmd.Parameters.AddWithValue("@login", login);
            cmd.Parameters.AddWithValue("@nome", nome);
            cmd.Parameters.AddWithValue("@senha", senha);
            
            conexao.Open();
            cmd.ExecuteNonQuery();
            conexao.Close();

        }

    }
}
 
Responder

25/08/2010

Eduardo Siqueira

Anderson, obrigado pela sua resposta, mais eu queria uma classe de conexão Generica.
Responder

25/08/2010

Paulo Freire

Uma simples para SQLServer

using System;using System.Collections.Generic;using System.Text;using System.Data;using System.Data.SqlClient;using System.Configuration;
namespace Persistencia{    public static class Banco    {
        public static SqlConnection conexao = new SqlConnection();
        public static void AbrirConexao()        {            conexao.ConnectionString = @"Data Source=SERVIDOR_012\SQL2008;Initial Catalog=shalom;Persist Security Info=True;User ID=paulo;Password=elevem_123456";            conexao.Open();        }


       
        public static void FecharConexao()        {            if (conexao.State == ConnectionState.Open)            {                conexao.Close();                conexao.Dispose();            }        }
        public static void ExecutarComando(string textoComando)        {            if (conexao.State != ConnectionState.Open)            {                AbrirConexao();            }            SqlCommand comando = new SqlCommand();            comando.CommandText = textoComando;            comando.Connection = conexao;            int registrosAfetados = comando.ExecuteNonQuery();        }
        public static SqlDataReader SelecionarRegistros(string textoComando)        {            if (conexao.State != ConnectionState.Open)            {                AbrirConexao();            }            SqlCommand comando = new SqlCommand();            comando.CommandText = textoComando;            comando.Connection = conexao;            return comando.ExecuteReader();        }
        public static SqlDataReader SelecionarUmRegistro(string textoComando)        {            if (conexao.State != ConnectionState.Open)            {                AbrirConexao();            }            SqlCommand comando = new SqlCommand();            comando.CommandText = textoComando;            comando.Connection = conexao;            return (SqlDataReader)comando.ExecuteScalar();        }
    }}
Responder

25/08/2010

Jardel Sobrinho

Tem uma que eu uso nos meus projetos. Ela usa o Mysql como banco de dados. Mas acho que é facil portar para qualquer outro banco de dados. A string de conexão fica localizada no arquivo Web.Config.

    <appSettings>
      <add key="Conexao.ConnectionString" value="server=host_do_servidor;connection timeout=120;uid=usuario_do_banco;database=nome_do_banco;pwd=senha_do_banco"/>
    </appSettings>

Em seguida, uso a classe de conexão BancoDados.cs, que possui os métodos para fazer a conexão.
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using MySql.Data.MySqlClient;
using System.Configuration;
using System.Collections;
using System.Reflection;
using System.Collections.Generic;
using MySql.Data;

public class BancoDados
{
    private MySqlConnection vConexao;

    public MySqlConnection BuscarConexao()
    {
        try
        {
            AppSettingsReader config = new AppSettingsReader();
            vConexao = new MySqlConnection();
            vConexao.ConnectionString = (string)config.GetValue("Conexao.ConnectionString", typeof(String));
            vConexao.Open();
            return vConexao;
        }
        catch
        {
            return null;
        }       
       
    }
}

Ela me retorna a conexão já aberta. Se quiser, pode fazer o metodo BuscarConexao como estatico(static) também.
Responder

25/08/2010

Jardel Sobrinho

Apenas um detalhe, para usar a classe ficaria mais ou menos assim

BancoDados bd = new BancoDados;

using(MySqlConnection con = bd.BuscarConexao())
{
    //Foi criado a conexão no objeto con, agora é só utilizado.
    //...Operações a serem realizadas...
   con.Close();
}
Responder

25/08/2010

Marcio Silveira

Eduardo, Já que você tá começando seu projeto do zero, que tal pensar no "Entity Framework"?  
Responder

25/08/2010

Eduardo Siqueira

Marcio, bem pensado cara, eu vou ver aqui, vou fazer um de teste aqui em casa, mais será que não é muito complicado ? dá uma luz ae =]
Responder

25/08/2010

Eduardo Siqueira

Marcio, bem pensado cara, eu vou ver aqui, vou fazer um de teste aqui em casa, mais será que não é muito complicado ? dá uma luz ae =]
Responder

26/08/2010

Marcio Silveira

Eduardo, é muito simples, procure na web alguns tutoriais, acho que nunca mais você vai querer desenvolver de outro jeito.
Um link interessante para começar:
http://imasters.uol.com.br/artigo/17459/aspnet/asp_net_usando_os_recursos_do_entity_framework_4__first-model_e_crud/

Bom estudo.

Responder

27/08/2010

Eduardo Siqueira

Marcio,

      Realmente é muito bom, como sempre você com suas sugestões e soluções muito bem vindas :).
  Valeu,  e valeu a todos também que postaram uma solução ,todas foram uteis.

    Abraços.
Responder

27/10/2011

Marco Menezes

Iae Pessoal estou com uma dúvida sobre como recupera as informações que estão dentro da classe (Connection). Passei uma select mais não consigo ler a informação que foi retornado pela instrução.


protected void Button2_Click(object sender, EventArgs e)
{
try
{

Connection.AbrirConexao();
if ((TextBox4.Text != "") && (TextBox5.Text != ""))
{
string SQL=("SELECT USERLOGIN,USERSENHA FROM TBUSER"+
" WHERE USERLOGIN = "+TextBox4.Text+""+
" AND USERSENHA = "+TextBox5.Text+"");

Connection.SelecionarUmRegistro(SQL);
MultiView1.ActiveViewIndex = 1;

Classe connection
public static SqlDataReader SelecionarRegistros(string textoComando)
{
if (conexao.State != ConnectionState.Open)
{
AbrirConexao();
}
SqlCommand comando = new SqlCommand();
comando.CommandText = textoComando;
comando.Connection = conexao;
return comando.ExecuteReader();


Abraço.
Responder

28/10/2011

Joel Rodrigues

Boa tarde, Marco Aurélio.

O método SelecionarUmRegistro retorna um único objeto. Este objeto é o conteúdo da primeira coluna da primeira linha do resultado da consulta. No seu caso (SELECT USERLOGIN, USERSENHA FROM TBUSER), o resultado do método será o conteúdo da coluna USERLOGIN do usuário que está tentando fazer login (se os dados estiverem corretos).
Para saber se o usuário conseguirá realizar login (USERLOGIN e USERSENHA válidos), vc pode verificar se o retorno do método é diferente de null (se for null, a consulta não retornou registros).
Porém, sugiro que você mude o método para o seguinte:

        public static object SelecionarUmRegistro(string textoComando)
        {
            if (conexao.State != ConnectionState.Open)
            {
                AbrirConexao();
            }
            SqlCommand comando = new SqlCommand();
            comando.CommandText = textoComando;
            comando.Connection = conexao;
            return comando.ExecuteScalar();
        }

Da outra forma, não atendia a sua necessidade e ainda estava sujeito a erros.
Responder

28/10/2011

Joel Rodrigues

Paulo Freire, boa tarde.
Quanto ao código que você postou, CREIO que há uma falha, desculpe se eu estiver errado.
No método SelecionarUmRegistro, você está convertendo (cast) o retorno do método ExecuteScalar() em um SqlDataReader. Acontece que o ExecuteScalar() retorna o conteúdo da primeira coluna da primeira linha do resultado da consulta, ou seja, pode ser um int, string, bool, etc., mas não um conjunto de informações (SqlDataReader).
Considerando isto, a conversão se torna inválida, não?
Você poderia alterar o ExecuteScalar para ExecuteReader ou mudar o tipo de retorno. Bem, para isso tem várias soluções.
Atenciosamente,
Joel Rodrigues
joelrlneto@gmail.com
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar