Criando uma Classe C Sharp para conexão com Banco de Dados. Parte II
public class ConnectionManager : IConnect
{
#region Fields
private String strConn = @”Data Source=local;Initial Catalog=SistemaVendasBD;Integrated Security=True;Pooling=False”;
SqlConnection objConn = null;
#endregion
#region Membros de IConnect
public bool conectar()
{
objConn = new SqlConnection(strConn);
try
{
objConn.Open();
}
catch
{
return false;
}
return true;
}
public bool desconectar()
{
try
{
if (objConn.State != ConnectionState.Closed)
{
objConn.Close();
objConn.Dispose();
}
}
catch
{
return false;
}
return true;
}
public DataTable retornarTabela(string p_strSql, List<SqlParameter> p_objParams, string p_strNmTabelaRetorno)
{
if (!this.conectar())
{
return null;
}
SqlCommand objCmd = new SqlCommand(p_strSql, objConn);
objCmd.CommandType = CommandType.StoredProcedure;
//para cada parametro, dentro de uma coleção de parametros, ele declara um novo parametro
foreach (SqlParameter param in p_objParams)
{
objCmd.Parameters.Add(param);
}
SqlDataAdapter objAdp = new SqlDataAdapter(objCmd);
DataSet ds = new DataSet();
try
{
objAdp.Fill(ds, p_strNmTabelaRetorno);
}
catch
{
return null;
}
this.desconectar();
return ds.Tables[p_strNmTabelaRetorno]; //retorna DataSet(com o resultado na memória)
}
public bool executarComando(string p_strSql, List<SqlParameter> p_objParams)
{
bool blnResult = false;
if (!this.conectar())
{
return false;
}
SqlCommand objCmd = new SqlCommand(p_strSql, objConn);
objCmd.CommandType = CommandType.StoredProcedure;
foreach (SqlParameter param in p_objParams)
{
objCmd.Parameters.Add(param);
}
try
{
blnResult = (objCmd.ExecuteNonQuery() > 0 ? true : false); //se o resultado for > 0, então retorna true
}
catch (Exception ex)
{
String erro = ex.Message;
blnResult = false;
}
this.desconectar();
return blnResult; //retorna sucesso ou falha
}
#endregion
}
Criando uma Classe C Sharp para conexão com Banco de Dados. Parte I
Gostaria de apresentar uma maneira de conexão simples para projetos .Net sem a utilização de ORMs. Hoje, se você procurar, a maioria dos tutoriais apresentados utilizam frameworks diversos. Não quero criar uma polêmica quanto a isso. Porque eu sei da grande utilidade e ganhos utilizando ORMs. Até aconselho a utiliar.
Esse post é para a galera nova que está aprendendo a desenvolver, e para a galera da antiga, que queira comentar se esta seria a forma ideal. Procurei utilizar o que tem de melhor dos recursos OO para uma aplicação, dando flexibilidade a classe, implentando uma interface com métodos básicos e propostos para uma conexão com o banco de dados de forma segura e versátil.
Constatarão que, quando entrarem na camada de Acesso a Dados, poderão usar comandos com Stored Procedures ou comandos SQL básicos, passando os dados do através de parâmetros. Não tendo a necessidade de “amarrar” as instruções SQL.
Quero começar na Interface e seus métodos:
- bool conectar() – um método boleano que fará a conexão com o banco e retornará verdadeiro ou falso.
- bool desconectar() – também boleano. Ele será encarregado de fechar sua conexão. Isso é uma boa prática de segurança e disponibilidade de banco. Retorna verdadeiro ou falso.
- DataTabel retornarTabela() – esse método retornará seus dados no formato de um DataTable. Ele possui alguns parâmetros. Explicarei melhor no próximo post.
- bool executarComando() – método que fará os comandos INSERT, UPDATE e DELETE do projeto. Ele retorna verdadeiro e falso. Também possui alguns parâmetros.
Eis o código,
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
public interface IConexao
{
bool conectar();
bool desconectar();
DataTable retornarTabela(string p_strSql, List p_objParams, string p_strNomeTabelaRetorno);
bool executarComando(string p_strSql, List p_objParams);
}
Neste post, propus apresentar o primeiro passo da criação da nossa classe de conexão. O próximo, farei a classe de conexão implementando a IConexao e seus métodos.
Até o próximo post!
*Lembre-se de invocar os using para utilizar as classes do .Net.


