none
Realizar um select e preencher uma lista RRS feed

  • Pergunta

  • Boa tarde, pessoal.

    Como posso realizar um select no BD e retornar os e-mails em uma lista? Fui tentando, tentando e não consegui nada. '-'

    Só pra lembrar, estou iniciando. ^^

    na classe DAL

    public ModeloAniversariante CarregaModeloAniversariante() { try { ModeloAniversariante modelo = new ModeloAniversariante(); SqlCommand cmd = new SqlCommand(); cmd.Connection = conexao.ObjetoConexao; cmd.CommandText = "select nascimento, aluno, email from Cadastro where anoletivo = 2010"; conexao.Conectar(); SqlDataReader registro = cmd.ExecuteReader(); if (registro.HasRows) { registro.Read(); modelo.Aniversario = Convert.ToDateTime(registro["nascimento"]); modelo.Aniversariante = Convert.ToString(registro["aluno"]); modelo.EmailResponsavel = Convert.ToString(registro["email"]);

    //Aqui ele dá um erro dizendo que não pode converter Object para List '-' } return modelo; } catch (SqlException er) { throw new Exception(er.Message); } finally { conexao.Desconectar(); } } }

    na Classe Modelo tentei assim '-'

        public class ModeloAniversariante
        {
            private string _aniversariante;
            private DateTime _aniversario;
            private ArrayList _emailresponsavel = new ArrayList();
    
            public ModeloAniversariante()
            {
                this._aniversariante = "";
                this._aniversario = DateTime.Now;
            }
    
            public string Aniversariante
            {
                get { return this._aniversariante; }
                set { this._aniversariante = value; }
            }
    
            public DateTime Aniversario
            {
                get { return this._aniversario; }
                set { this._aniversario = value; }
            }
    
            public ArrayList EmailResponsavel
            {
                get { return this._emailresponsavel; }
                set { this._emailresponsavel = value; }
                
            }
        }

    e no botão

            private void enviarEmailAosResponsáveisToolStripMenuItem_Click(object sender, EventArgs e)
            {
                DALConexao cx = new DALConexao(DadosDaConexao.StringDeConexao);
                BLLAniversariante bll = new BLLAniversariante(cx);
    
                ModeloAniversariante modelo = bll.CarregaModeloAniversariante(3);
                string responsavel = Convert.ToString(modelo.EmailResponsavel);
    
                Email = new MailMessage();
                Email.To.Add(new MailAddress(responsavel));
                Email.From = (new MailAddress("meuemail@email.com"));
                Email.Subject = "teste";
                Email.IsBodyHtml = true;
                Email.Body = "Isso é um teste";
                SmtpClient cliente = new SmtpClient("smtp.live.com", 587);
                using (cliente)
                {
                    cliente.Credentials = new System.Net.NetworkCredential("email@meuemail.com", "minhasenha");
                    cliente.EnableSsl = true;
                    cliente.Send(Email);
                }
                MessageBox.Show("E-mail enviado com sucesso!", "Sucesso");
            }

    Valeu galera, já adiantando, desculpa aí minha noobice. :P

    sexta-feira, 26 de fevereiro de 2016 15:15

Respostas

  • Lailson,

    Muito possivelmente quando vc faz a consulta:

    select nascimento, aluno, email from Cadastro where anoletivo = 2010

    Ela retorna mais de um registro assim você precisa iterar nesses registros e ir preenchendo uma lista, algo parecido com isso:

    public List<ModeloAniversariante> CarregaModeloAniversariante() {

    List<ModeloAniversariante> lst = new List<ModeloAniversariante>(); try { ModeloAniversariante modelo = new ModeloAniversariante(); SqlCommand cmd = new SqlCommand(); cmd.Connection = conexao.ObjetoConexao; cmd.CommandText = "select nascimento, aluno, email from Cadastro where anoletivo = 2010"; conexao.Conectar(); SqlDataReader registro = cmd.ExecuteReader();

                   while (reader.Read())
                   {
                      IDataRecord record = registro.Read();

    modelo.Aniversario = Convert.ToDateTime(record["nascimento"]); modelo.Aniversariante = Convert.ToString(record["aluno"]); modelo.EmailResponsavel = Convert.ToString(record["email"]);

    lst.Add(modelo); }

    return lst; } catch (SqlException er) { throw new Exception(er.Message); } finally { conexao.Desconectar(); } } }



    Att. Andre de Mattos Ferraz - www.iamferraz.com.br - http://mbsy.co/ldecrespigny/19022985

    sexta-feira, 26 de fevereiro de 2016 19:35

  •         public List<Class_Aluno> valor(string select)
            {
                Aluno = new List<Class_Aluno>();
                cnn = new ConnectionClass();

                cnn.sqlconecao();
                cnn.sqlquery(select);
                cnn.T_reader();

                if (cnn.reader.HasRows)
                {
                    while (cnn.reader.Read())
                    {
                        Aluno.Add(new Class_Aluno
                        {
                            Nome = cnn.reader.GetValue(0).ToString(),
                            Password = cnn.reader.GetValue(1).ToString()
                        });
                    }
                }
                else
                {
                    cnn.reader.Close();
                }

                return Aluno;
            }

    A flower cannot blossom without sunshine, and man cannot live without love.

    • Marcado como Resposta Marcos SJ segunda-feira, 29 de fevereiro de 2016 14:36
    sábado, 27 de fevereiro de 2016 21:26
    Moderador

Todas as Respostas

  • Olá Lailson Conceição,

    Seja bem vindo ao fórum

    Somente a título de informação para suas futuras threads, o fórum MSDN não da suporte a questões de "How to", ou seja, "Como fazer isto", "como fazer aquilo", ou situações do tipo "Preciso de um código que faça...", "preciso de ajuda para criar um sistema...", Preciso de um método que faça isso ou aquilo...". O fórum é focado em situações na qual um código ou aplicação está gerando um erro (problema) ou em qualquer outro tipo de situação que o problema seja a tecnologia.

    De qualquer maneira peço que verifique as informações contidas nesta documentação, acredito que talvez estas informações possam ser úteis para te ajudar a resolver a sua dúvida.

    Atenciosamente


    Marcos SJ

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.




    • Editado Marcos SJ sexta-feira, 26 de fevereiro de 2016 19:00
    • Marcado como Resposta Lailson Conceição sábado, 27 de fevereiro de 2016 17:22
    • Não Marcado como Resposta Marcos SJ segunda-feira, 29 de fevereiro de 2016 12:21
    sexta-feira, 26 de fevereiro de 2016 18:46
  • Lailson,

    Muito possivelmente quando vc faz a consulta:

    select nascimento, aluno, email from Cadastro where anoletivo = 2010

    Ela retorna mais de um registro assim você precisa iterar nesses registros e ir preenchendo uma lista, algo parecido com isso:

    public List<ModeloAniversariante> CarregaModeloAniversariante() {

    List<ModeloAniversariante> lst = new List<ModeloAniversariante>(); try { ModeloAniversariante modelo = new ModeloAniversariante(); SqlCommand cmd = new SqlCommand(); cmd.Connection = conexao.ObjetoConexao; cmd.CommandText = "select nascimento, aluno, email from Cadastro where anoletivo = 2010"; conexao.Conectar(); SqlDataReader registro = cmd.ExecuteReader();

                   while (reader.Read())
                   {
                      IDataRecord record = registro.Read();

    modelo.Aniversario = Convert.ToDateTime(record["nascimento"]); modelo.Aniversariante = Convert.ToString(record["aluno"]); modelo.EmailResponsavel = Convert.ToString(record["email"]);

    lst.Add(modelo); }

    return lst; } catch (SqlException er) { throw new Exception(er.Message); } finally { conexao.Desconectar(); } } }



    Att. Andre de Mattos Ferraz - www.iamferraz.com.br - http://mbsy.co/ldecrespigny/19022985

    sexta-feira, 26 de fevereiro de 2016 19:35
  • André, boa tarde. Desculpa a demora. 

    Na linha IDataRecord record = registro.Read();

    Diz que não é possível converter o tipo Bool para ...Data.IDataRecord.

    E na linha modelo.EmailResponsavel = Convert.ToString(record["email"]);

    Diz que não é possível converter o tipo String para ..Collections.List<string>.

    De qualquer forma clareou minha mente, vou tentar resolver aqui.
    Mas se quiser continuar a ajuda, fique à vontade. ^^

    sábado, 27 de fevereiro de 2016 17:21
  • Boa tarde, Marcos.

    De acordo com seu texto, a minha dúvida foi postada fora do padrão? '-'

    Abraços.

    sábado, 27 de fevereiro de 2016 17:23

  •         public List<Class_Aluno> valor(string select)
            {
                Aluno = new List<Class_Aluno>();
                cnn = new ConnectionClass();

                cnn.sqlconecao();
                cnn.sqlquery(select);
                cnn.T_reader();

                if (cnn.reader.HasRows)
                {
                    while (cnn.reader.Read())
                    {
                        Aluno.Add(new Class_Aluno
                        {
                            Nome = cnn.reader.GetValue(0).ToString(),
                            Password = cnn.reader.GetValue(1).ToString()
                        });
                    }
                }
                else
                {
                    cnn.reader.Close();
                }

                return Aluno;
            }

    A flower cannot blossom without sunshine, and man cannot live without love.

    • Marcado como Resposta Marcos SJ segunda-feira, 29 de fevereiro de 2016 14:36
    sábado, 27 de fevereiro de 2016 21:26
    Moderador
  • Bom dia,

    Por falta de retorno do usuário, esta thread será encerrada.

    Caso seja necessário, por gentileza, abra uma thread nova.

    Atenciosamente


    Marcos SJ

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    segunda-feira, 29 de fevereiro de 2016 14:36