CARREGAMENTO DE DATATABLE EST? CORRETO?

MARCELODAVID 13/11/2017 03:29:03
#477803
Bom dia senhores,
carrego um datatable com o código abaixo e gostaria da opinião dos nobres colegas para me falarem se estou fazendo da forma correta e se não,
como seria?

Obs: Não estou tendo problemas no carregamento, apenas quero saber se essa é uma forma correta de fazer isso.

Desde já grato.

  public DataTable Localizar(string Bairro, string Cidade, string UF)
{
string strSQL = [Ô]SELECT tbl_bairros.id_bai, tbl_bairros.bai_descricao, tbl_cidades.cid_descricao, tbl_cidades.cid_uf FROM [Ô] +
[Ô]tbl_bairros INNER JOIN tbl_cidades ON tbl_bairros.cid_id = tbl_cidades.id_cid [Ô] +
[Ô]WHERE bai_descricao LIKE @bairro AND cid_descricao [Ô] +
[Ô]LIKE @cidade AND cid_uf LIKE @uf[Ô];

DataTable lista = new DataTable();

SqlCommand cmd = new SqlCommand();
cmd.Connection = conexao.ObjetoConexao;
cmd.CommandText = strSQL;
cmd.Parameters.AddWithValue([Ô]@bairro[Ô], [Ô]%[Ô]+Bairro+[Ô]%[Ô]);
cmd.Parameters.AddWithValue([Ô]@cidade[Ô], [Ô]%[Ô]+Cidade+[Ô]%[Ô]);
cmd.Parameters.AddWithValue([Ô]@uf[Ô], [Ô]%[Ô]+ UF + [Ô]%[Ô]);
conexao.Conectar();
lista.Load(cmd.ExecuteReader());

return lista;
}

JABA 13/11/2017 04:17:14
#477804
Resposta escolhida
Eu faria um tratamento de exceção ao abrir a conexão e ao executar o cmd.ExecuteReader, e usaria blocos Using para fechar a conexão. Outra coisa que eu mudaria seria na parte que envolve os parâmetros. Criaria uma classe para representar esses dados. Por exemplo, poderia ser uma classe Endereco - o nome vai depender do contexto.

public DataTable Localizar(Endereco endereco) {
[txt-color=#e80000]...[/txt-color]
cmd.Parameters.AddWithValue([Ô]@bairro[Ô], [Ô]%[Ô]+[txt-color=#e80000]endereco.Bairro[/txt-color]+[Ô]%[Ô]);
[txt-color=#e80000]...[/txt-color]
}


www.macoratti.net/vbn5_dpo.htm
KERPLUNK 13/11/2017 09:04:14
#477805
E também o fechamento e dispose da conexão antes do retorno.
MARCELODAVID 13/11/2017 10:27:21
#477807
Entendi senhores, muito grato pelos auxílios! Me dou por satisfeito!
Tópico encerrado , respostas não são mais permitidas