Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Fala galera... beleza?
Então... tenho uma Classe responsável pelo acesso a base de dados, ela possui basicamente dois metodos:
ExecuteQuerySelect -> Executa querys com Retorno de Dados.(datatable)
ExecuteNonQuery -> Executa querys sem Retorno de Dados.
andei pesquisando na web a melhor forma de aumentar a performance e segurança da minha aplicação começando por essa classe, descobri alguns artigos, que aconselhavam a usar o "using (sqlConnection)" na minha conexão, pra indicar quando ela deve ser aberta ou fechada, resumindo, não sei se estou fazendo da maneira correta, e se existem outra formas/técnicas para deixar o acesso a dados mais rápido!.... o que vcs fariam para melhorar essa classe? :rolleyes:
obrigado pela força!!! http://forum.imasters.com.br/public/style_emoticons/default/grin.gif
abraços!
Thiago
using System;
using System.Data;
using System.Data.SqlClient;
using System.Web.Configuration;
namespace CORE.DAL
{
/// <summary>
/// Classe DBHelper (Camada de acesso a dados)
/// Esta classe possui dois métodos responsáveis pelas ações de Seleção, Inserção, Exclusão, Alteração na base de dados.
/// </summary>
public class DBHelper
{
//Região de Atributos
#region <Atributos>
private SqlConnection sqlConnection;
#endregion
//Região de propriedades
#region<Propriedades>
//Get que retorna a String de conexão ao banco de dados alocada no arquivo WEBCONFIG.
private string gs_connectionString
{
get
{
return WebConfigurationManager.ConnectionStrings["StringConexao"].ToString();
}
}
//Get que abre (caso esteja fechada) e retorna a String de conexão ao banco de dados.
private SqlConnection gs_Conexao
{
get
{
if (sqlConnection == null || sqlConnection.State.ToString() == "Closed")
{
sqlConnection = new SqlConnection(gs_connectionString);
sqlConnection.Open();
}
return sqlConnection;
}
}
#endregion
//Região de Métodos
#region<Métodos>
/// <summary>
/// Método para executar e retornar querys de Select na base de dados.
/// </summary>
/// <param name="sql">slq - query SELECT a ser executada.</param>
/// <returns>DataTable - Tabela com os dados solicitados.</returns>
public DataTable ExecuteQuerySelect(string sql)
{
using (sqlConnection)
{
//Cria um atributo do tipo "Comando Sql" que Recebe a query solicidade e a Conexão.
SqlCommand oCommand = new SqlCommand(sql, gs_Conexao);
//Cria um atributo do tipo "Adaptador de Dados" com "Comando Sql"
SqlDataAdapter oDa = new SqlDataAdapter(oCommand);
//Cria uam coleção de dados (DataSet)
DataSet oDs = new DataSet();
//Preenche a Coleção de dados com o "Adaptador de Dados"
oDa.Fill(oDs);
//fecha Conexão
sqlConnection.Close();
//Caso a Coleção de Dados(oDS) contenha dados, e esses dados sejam equivalentes a uma tabela.
if (oDs != null && oDs.Tables.Count > 0)
{
//Retorna a Tabela da Coleção de Dados.
return oDs.Tables[0];
}
}
//Caso a Coleção de Dados(oDS) esteja Nula, Retorna uma Tabela vazia.(DataTable = Null)
return null;
}
/// <summary>
/// Método para executar ações sem retorno na base de dados. (Delete, Insert, Update)
/// </summary>
/// <param name="sql">slq - query (Delete, Insert ou Update) a ser executada.</param>
public void ExecuteNonQuery(string sql)
{
using (sqlConnection)
{
//Cria um atributo do tipo "Comando Sql" que Recebe a query solicidade e a Conexão.
SqlCommand oCommand = new SqlCommand(sql, gs_Conexao);
//Executa sem retorno o "Comando Sql" no Banco de dados.
oCommand.ExecuteNonQuery();
//fecha Conexão
sqlConnection.Close();
}
}
#endregion
}
}Carregando comentários...