Classe Conexão C#
25/08/2010
0
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
Posts
25/08/2010
Anderson Peluso
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();
}
}
}
25/08/2010
Eduardo Siqueira
25/08/2010
Paulo Freire
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(); }
}}
25/08/2010
Jardel Sobrinho
<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.
25/08/2010
Jardel Sobrinho
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();
}
25/08/2010
Marcio Silveira
25/08/2010
Eduardo Siqueira
25/08/2010
Eduardo Siqueira
26/08/2010
Marcio Silveira
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.
27/08/2010
Eduardo Siqueira
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.
27/10/2011
Marco Menezes
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.
28/10/2011
Joel Rodrigues
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.
28/10/2011
Joel Rodrigues
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
Clique aqui para fazer login e interagir na Comunidade :)