Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

filipescoob

Camada DAL

Recommended Posts

Caros amigos boa noite,

 

estou com um problema relativamente simples, porem revirei o google hoje o dia inteiro e nao consegui resolver.

 

estou fazendo a camada DAL de uma aplicacao e estou com dificuldades para retornar os dados da base e carregar um repeater.

 

segue minha camada DAL

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using IGrupo = LibraryCEA.Concrete.Modulo00_Controle.IGrupo;

namespace LibraryCEA.DAL.Modulo00_Controle
{
   public class Grupo
   {

       public Grupo()
       { }


       DataSet ds = new DataSet();
       SqlConnection conexao;
       //Parametros da Aplicacao
       SqlCommand cmd = new SqlCommand();
       SqlParameter sp1 = new SqlParameter();
       SqlParameter sp2 = new SqlParameter();
       SqlParameter sp3 = new SqlParameter();
       SqlParameter sp4 = new SqlParameter();
       ICollection<IGrupo> Lista = null;

       public int Insert(IGrupo ItemGrupo, string conn)
       {
           try
           {
               conexao = new SqlConnection(conn);
               cmd.Parameters.Add("@VAR_NOME", SqlDbType.VarChar).Value = ItemGrupo.var_nome;
               cmd.Parameters.Add("@VAR_DESCRICAO", SqlDbType.VarChar).Value = ItemGrupo.var_descricao;
               cmd.Parameters.Add("@FLG_ATIVO", SqlDbType.Int).Value = ItemGrupo.flg_ativo;
               cmd.Parameters.Add("@FLG_COMBO", SqlDbType.Int).Value = ItemGrupo.int_combo;
               SqlParameter ident = new SqlParameter("@FLG_RETORNO", DbType.Int32);
               ident.Direction = ParameterDirection.Output;
               cmd.Parameters.Add(ident);

               cmd = new SqlCommand("SP_CASA_M0_TB_GRUPO_INSERT", conexao);
               cmd.CommandType = CommandType.StoredProcedure;
               conexao.Open();
               cmd.ExecuteNonQuery();

               int intGrupo = Convert.ToInt32(cmd.Parameters["@FLG_RETORNO"].Value);

               return 1;

           }
           catch (Exception ex)
           {
               //lblmsg.Text = ex.Message;
               return 0;
           }
           finally
           {
               conexao.Close();

           }
       }

       public static DataSet getDataSet(string strSQL)
       {
           DataSet ds = new DataSet();
           SqlConnection cn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["MsSQL"].ConnectionString);
           cn.Open();
           SqlDataAdapter da = new SqlDataAdapter(strSQL, cn);
           ds.Tables.Add();
           ds.EnforceConstraints = false;          // Desabilita restrições SQL constraints, deixando o DataSet mais rápido (+/- engine MyIsam do MySQL)
           ds.Tables[0].BeginLoadData(); // Trata todas as colunas sem diferença, sem PK, sem FK...
           da.Fill(ds.Tables[0]);
           cn.Close();
           return ds;
           cn = null;
       }


       public int Update(IGrupo ItemGrupo, string conn)
       {
           try
           {
               conexao = new SqlConnection(conn);
               cmd.Parameters.Add("@ID_GRUPO", SqlDbType.Int).Value = ItemGrupo.id_grupo;
               cmd.Parameters.Add("@VAR_NOME", SqlDbType.VarChar).Value = ItemGrupo.var_nome;
               cmd.Parameters.Add("@VAR_DESCRICAO", SqlDbType.VarChar).Value = ItemGrupo.var_descricao;
               cmd.Parameters.Add("@FLG_ATIVO", SqlDbType.Int).Value = ItemGrupo.flg_ativo;
               cmd.Parameters.Add("@FLG_COMBO", SqlDbType.Int).Value = ItemGrupo.int_combo;
               SqlParameter ident = new SqlParameter("@FLG_RETORNO", DbType.Int16);
               ident.Direction = ParameterDirection.Output;
               cmd.Parameters.Add(ident);

               cmd = new SqlCommand("SP_CASA_M0_TB_GRUPO_UPDATE", conexao);
               cmd.CommandType = CommandType.StoredProcedure;
               conexao.Open();
               cmd.ExecuteNonQuery();



               return 1;
           }
           catch (Exception ex)
           {
               //lblmsg.Text = ex.Message;
               return 0;
           }
           finally
           {
               conexao.Close();

           }
       }

       public DataSet Select(IGrupo ItemGrupo, string conn)
       {
           try
           {
               conexao = new SqlConnection(conn);
               cmd.Parameters.Add("@ID_GRUPO", SqlDbType.Int).Value = ItemGrupo.id_grupo;
               cmd.Parameters.Add("@VAR_NOME", SqlDbType.VarChar).Value = ItemGrupo.var_nome;
               cmd.Parameters.Add("@VAR_DESCRICAO", SqlDbType.VarChar).Value = ItemGrupo.var_descricao;
               cmd.Parameters.Add("@FLG_ATIVO", SqlDbType.Int).Value = ItemGrupo.flg_ativo;
               cmd.Parameters.Add("@FLG_COMBO", SqlDbType.Int).Value = ItemGrupo.int_combo;

               cmd = new SqlCommand("SP_CASA_M0_TB_GRUPO_SELECT", conexao);
               cmd.CommandType = CommandType.StoredProcedure;
               conexao.Open();
               //cmd.ExecuteNonQuery();
               //SqlDataReader rdr = cmd.ExecuteReader();

               SqlDataAdapter ta = new SqlDataAdapter(cmd);
               DataSet ds = new DataSet();
               ta.Fill(ds);

               return ds;

           }
           catch (Exception ex)
           {
               //lblmsg.Text = ex.Message;
           }
           finally
           {
               conexao.Close();

           }
       }

   }
}

 

Podem ver que no select existem algumas linhas comentadas, tentei de diversos modos, com lista, dataset e ICollection porem nenhum com resultados satisfatórios.

 

Como devo fazer este retorno para carregar o repeater, ou até um gridview.

 

Conto com a ajuda de todos.

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola quintelab,

 

Esta é realmente a minha duvida(como popular minha classe e retornar por ela o resultado do Select na procedure), vou testar com o link que passou tambem e retorno.

 

Muito Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

O básico é dar percorrer seu DataReader e ir alimentando os campos da sua classe, mais ou menos assim, fiz de cabeça, mas é a idéia:

 

List<SuaClasse> lista = new List<SuaClasse>();
while(reader.Read())
{
 SuaClasse classe = new SuaClasse();
 classe.CAMPO1 = reader["CAMPO1"].ToString();
 classe.CAMPO2 = reader["CAMPO2"].ToString();
 lista.Add(classe);
}

return lista;

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Assim que eu pisar em casa hoje eu vou testar.

 

Esta é a maneira certo de fazer o DAL ?

 

Obrigado por enquanto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É complicado em falar em maneira certa, tem que ver o que te atende, o correto pra mim é o que atendente o cliente.

Eu trabalho desta forma, mas ao invés de popular na mão campo por campo criei um framework pra isso.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola boa noite,

 

Desculpem na demora do retorno, esta semana esta muito corrido na empresa e tenho chego em casa muito tarde, mas hoje cheguei e ja vim para o computador.

 

Testei o codigo passado, no codigo nao deu erro, mas no metodo da erro e nao sei qual é. Segue o metodo abaixo.

 

public List<IGrupo> Select(IGrupo ItemGrupo, string conn)
       {
           try
           {
               conexao = new SqlConnection(conn);
               cmd.Parameters.Add("@ID_GRUPO", SqlDbType.Int).Value = ItemGrupo.id_grupo;
               cmd.Parameters.Add("@VAR_NOME", SqlDbType.VarChar).Value = ItemGrupo.var_nome;
               cmd.Parameters.Add("@VAR_DESCRICAO", SqlDbType.VarChar).Value = ItemGrupo.var_descricao;
               cmd.Parameters.Add("@FLG_ATIVO", SqlDbType.Int).Value = ItemGrupo.flg_ativo;
               cmd.Parameters.Add("@FLG_COMBO", SqlDbType.Int).Value = ItemGrupo.int_combo;

               cmd = new SqlCommand("SP_CASA_M0_TB_GRUPO_SELECT", conexao);
               cmd.CommandType = CommandType.StoredProcedure;
               conexao.Open();
               //cmd.ExecuteNonQuery();

               SqlDataReader reader = cmd.ExecuteReader();

               List<IGrupo> lista = new List<IGrupo>();
               while (reader.Read())
               {
                   IGrupo classe = new IGrupo();
                   classe.id_grupo = Convert.ToInt32(reader["id_grupo"]);
                   classe.var_nome = reader["var_nome"].ToString();
                   classe.var_descricao = reader["var_descricao"].ToString();
                   classe.flg_ativo = Convert.ToInt32(reader["flg_ativo"]);
                   classe.int_combo = Convert.ToInt32(reader["int_combo"]);
                   lista.Add(classe);
               }

               return lista;

           }
           catch (Exception ex)
           {
               //lblmsg.Text = ex.Message;
           }
           finally
           {
               conexao.Close();

           }
       }

 

o codigo na hora de compilar da a seguinte mensagem.

 

Error 4 'LibraryCEA.DAL.Modulo00_Controle.Grupo.Select(LibraryCEA.Concrete.Modulo00_Controle.IGrupo, string)': not all code paths return a value

 

ha sim, o erro da no nome do metodo, ele fica em vermelho e náo compila.

 

Agradeço por enquanto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.