none
Erro ao pupular lista com dados recebidos do banco de dados RRS feed

  • Pergunta

  •  

    Estou criando uma aplicação para auxiliar no controle das atividades escolares, ao retornar dados do meu banco, no momento de inserção em uma lista, os mesmos estão sobrescrevendo os dados que ja estavam adicionados anteriormente acontecendo da seguinte forma, eu retorno os valores da minha tabela do banco e adiciono na lista, quando a estrutura while executa novamente na posição 0 que ja estava preenchida com id 1, recebe o id 2 e a posição 1 também recebe o id 1, e a saída apresenta diversas mensagens:

    'IntelliControll.vshost.exe' (CLR v4.0.30319: IntelliControll.vshost.exe): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
    'IntelliControll.vshost.exe' (CLR v4.0.30319: IntelliControll.vshost.exe): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\Microsoft.VisualStudio.HostingProcess.Utilities\12.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.HostingProcess.Utilities.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
    'IntelliControll.vshost.exe' (CLR v4.0.30319: IntelliControll.vshost.exe): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Windows.Forms\v4.0_4.0.0.0__b77a5c561934e089\System.Windows.Forms.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
    'IntelliControll.vshost.exe' (CLR v4.0.30319: IntelliControll.vshost.exe): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
    'IntelliControll.vshost.exe' (CLR v4.0.30319: IntelliControll.vshost.exe): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Drawing\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
    'IntelliControll.vshost.exe' (CLR v4.0.30319: IntelliControll.vshost.exe): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\Microsoft.VisualStudio.HostingProcess.Utilities.Sync\12.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.HostingProcess.Utilities.Sync.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
    'IntelliControll.vshost.exe' (CLR v4.0.30319: IntelliControll.vshost.exe): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\Microsoft.VisualStudio.Debugger.Runtime\12.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.Debugger.Runtime.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
    'IntelliControll.vshost.exe' (CLR v4.0.30319: IntelliControll.vshost.exe): Loaded 'C:\Users\caiow\Documents\Cursos online\School of net\software\IntelliControll\IntelliControll\bin\Debug\IntelliControll.vshost.exe'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
    'IntelliControll.vshost.exe' (CLR v4.0.30319: IntelliControll.vshost.exe): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\Microsoft.ReportViewer.WinForms\10.0.0.0__b03f5f7f11d50a3a\Microsoft.ReportViewer.WinForms.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
    'IntelliControll.vshost.exe' (CLR v4.0.30319: IntelliControll.vshost.exe): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\MySql.Data\v4.0_6.10.6.0__c5687fc88969c44d\MySql.Data.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
    'IntelliControll.vshost.exe' (CLR v4.0.30319: IntelliControll.vshost.exe): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Core\v4.0_4.0.0.0__b77a5c561934e089\System.Core.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
    'IntelliControll.vshost.exe' (CLR v4.0.30319: IntelliControll.vshost.exe): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Xml.Linq\v4.0_4.0.0.0__b77a5c561934e089\System.Xml.Linq.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
    'IntelliControll.vshost.exe' (CLR v4.0.30319: IntelliControll.vshost.exe): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Data.DataSetExtensions\v4.0_4.0.0.0__b77a5c561934e089\System.Data.DataSetExtensions.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
    'IntelliControll.vshost.exe' (CLR v4.0.30319: IntelliControll.vshost.exe): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\Microsoft.CSharp\v4.0_4.0.0.0__b03f5f7f11d50a3a\Microsoft.CSharp.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
    'IntelliControll.vshost.exe' (CLR v4.0.30319: IntelliControll.vshost.exe): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_32\System.Data\v4.0_4.0.0.0__b77a5c561934e089\System.Data.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
    'IntelliControll.vshost.exe' (CLR v4.0.30319: IntelliControll.vshost.exe): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Xml\v4.0_4.0.0.0__b77a5c561934e089\System.Xml.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
    'IntelliControll.vshost.exe' (CLR v4.0.30319: IntelliControll.vshost.exe): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\mscorlib.resources\v4.0_4.0.0.0_pt-BR_b77a5c561934e089\mscorlib.resources.dll'. Module was built without symbols.
    O thread 0x1a88 foi fechado com o código 259 (0x103).
    O thread 0x1428 foi fechado com o código 259 (0x103).
    O thread 0x2c7c foi fechado com o código 259 (0x103).
    'IntelliControll.vshost.exe' (CLR v4.0.30319: IntelliControll.vshost.exe): Loaded 'C:\Users\caiow\Documents\Cursos online\School of net\software\IntelliControll\IntelliControll\bin\Debug\IntelliControll.exe'. Símbolos carregados.
    'IntelliControll.vshost.exe' (CLR v4.0.30319: IntelliControll.vshost.exe): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Configuration\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
    'IntelliControll.vshost.exe' (CLR v4.0.30319: IntelliControll.vshost.exe): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_32\System.Transactions\v4.0_4.0.0.0__b77a5c561934e089\System.Transactions.dll'. Não é possível encontrar ou abrir o arquivo PDB.
    'IntelliControll.vshost.exe' (CLR v4.0.30319: IntelliControll.vshost.exe): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_32\System.EnterpriseServices\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.EnterpriseServices.dll'. Não é possível encontrar ou abrir o arquivo PDB.
    'IntelliControll.vshost.exe' (CLR v4.0.30319: IntelliControll.vshost.exe): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.resources\v4.0_4.0.0.0_pt-BR_b77a5c561934e089\System.resources.dll'. Module was built without symbols.
    'IntelliControll.vshost.exe' (CLR v4.0.30319: IntelliControll.vshost.exe): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Management\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Management.dll'. Não é possível encontrar ou abrir o arquivo PDB.
    O programa '[928] IntelliControll.vshost.exe' foi fechado com o código -1073741510 (0xc000013a).

    estava funcionando perfeitamente, simplesmente de um dia para o outro começou esse problema

     public List<Periodo> buscaPeriodo()
            {
                List<Periodo> listaPeriodos = new List<Periodo>();
                Periodo periodo = new Periodo();
                try
                {
                    con = DAO.getConnection();
                    var comand = con.CreateCommand();
                    MySqlDataReader dataRead;
                    con.Open();

                    comand.CommandText = "select * from periodo";
                    dataRead = comand.ExecuteReader();

                    if (dataRead == null)
                    {
                        listaPeriodos = null;
                        return listaPeriodos;
                    }
                    else
                    {
                        while (dataRead.Read())
                        {
                            periodo.IdPeriodo = Convert.ToInt32(dataRead["id_periodo"]);
                            periodo.Descricao = dataRead["descricao"].ToString();

                            listaPeriodos.Add(periodo);
                        }

                        comand.Dispose();
                        con.Close();

                        return listaPeriodos;

                    }
                }
                catch
                {
                    Console.WriteLine("não foi possivel buscar um período");
                    listaPeriodos = null;

                    return listaPeriodos;
                }
            }

     public List<Periodo> buscaPeriodo()
            {
                List<Periodo> listaPeriodos = new List<Periodo>();
                Periodo periodo = new Periodo();
                try
                {
                    con = DAO.getConnection();
                    var comand = con.CreateCommand();
                    MySqlDataReader dataRead;
                    con.Open();
    
                    comand.CommandText = "select * from periodo";
                    dataRead = comand.ExecuteReader();
    
                    if (dataRead == null)
                    {
                        listaPeriodos = null;
                        return listaPeriodos;
                    }
                    else
                    {
                        while (dataRead.Read())
                        {
                            periodo.IdPeriodo = Convert.ToInt32(dataRead["id_periodo"]);
                            periodo.Descricao = dataRead["descricao"].ToString();
    
                            listaPeriodos.Add(periodo);
                        }
    
                        comand.Dispose();
                        con.Close();
    
                        return listaPeriodos;
    
                    }
                }
                catch
                {
                    Console.WriteLine("não foi possivel buscar um período");
                    listaPeriodos = null;
    
                    return listaPeriodos;
                }
            }


    quinta-feira, 15 de março de 2018 04:59

Respostas

  • Considerando que você está fazendo um loop no DataReader e que está usando uma coleção (List), suponho que seja para retornar múltiplos registros, certo? O ponto é que você está instanciando a classe Periodo fora do loop, ou seja, a cada loop você altera os valores do mesmo objeto, ao invés de criar um novo, atribuir valores e adicionar na lista.

    Você precisaria fazer assim:

    public List<Periodo> buscaPeriodo()
            {
                List<Periodo> listaPeriodos = new List<Periodo>();
    
    
                // ERRADO
                //Periodo periodo = new Periodo();
    
    
                try
                {
                    con = DAO.getConnection();
                    var comand = con.CreateCommand();
                    MySqlDataReader dataRead;
                    con.Open();
    
                    comand.CommandText = "select * from periodo";
                    dataRead = comand.ExecuteReader();
    
                    if (dataRead == null)
                    {
                        listaPeriodos = null;
                        return listaPeriodos;
                    }
                    else
                    {
                        while (dataRead.Read())
                        {
                            Periodo periodo = new Periodo();
                            periodo.IdPeriodo = Convert.ToInt32(dataRead["id_periodo"]);
                            periodo.Descricao = dataRead["descricao"].ToString();
    
                            listaPeriodos.Add(periodo);
                        }
    
                        comand.Dispose();
                        con.Close();
    
                        return listaPeriodos;
    
                    }
                }
                catch
                {
                    Console.WriteLine("não foi possivel buscar um período");
                    listaPeriodos = null;
    
                    return listaPeriodos;
                }
            }


    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    quarta-feira, 28 de março de 2018 11:16

Todas as Respostas

  • ja fiz de tudo possível relacionado a compilação e o problema ainda persiste.
    terça-feira, 27 de março de 2018 22:10
  • Considerando que você está fazendo um loop no DataReader e que está usando uma coleção (List), suponho que seja para retornar múltiplos registros, certo? O ponto é que você está instanciando a classe Periodo fora do loop, ou seja, a cada loop você altera os valores do mesmo objeto, ao invés de criar um novo, atribuir valores e adicionar na lista.

    Você precisaria fazer assim:

    public List<Periodo> buscaPeriodo()
            {
                List<Periodo> listaPeriodos = new List<Periodo>();
    
    
                // ERRADO
                //Periodo periodo = new Periodo();
    
    
                try
                {
                    con = DAO.getConnection();
                    var comand = con.CreateCommand();
                    MySqlDataReader dataRead;
                    con.Open();
    
                    comand.CommandText = "select * from periodo";
                    dataRead = comand.ExecuteReader();
    
                    if (dataRead == null)
                    {
                        listaPeriodos = null;
                        return listaPeriodos;
                    }
                    else
                    {
                        while (dataRead.Read())
                        {
                            Periodo periodo = new Periodo();
                            periodo.IdPeriodo = Convert.ToInt32(dataRead["id_periodo"]);
                            periodo.Descricao = dataRead["descricao"].ToString();
    
                            listaPeriodos.Add(periodo);
                        }
    
                        comand.Dispose();
                        con.Close();
    
                        return listaPeriodos;
    
                    }
                }
                catch
                {
                    Console.WriteLine("não foi possivel buscar um período");
                    listaPeriodos = null;
    
                    return listaPeriodos;
                }
            }


    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    quarta-feira, 28 de março de 2018 11:16
  • Boa tarde Juliano, não havia nem pensado nessa possibilidade, mas funcionou perfeitamente, muito obrigado.

    quarta-feira, 28 de março de 2018 18:08