none
GridView RRS feed

  • Pergunta

  • Boa noite Galera, estou com um problema, tenho uma aplicação onde carrego um GridView a partir de um Excel, mas agora preciso subir todo o GridView para uma tabela em SQL. alquem tem alguma coisa pronta para poder me ajudar?

    quinta-feira, 13 de março de 2014 01:04

Respostas

  • ppsantos, boa noite.

    Bom, existem várias formas de se fazer isso. Formas rápidas porém, lentas e que exigem mutias requisições do servidor, existe formas mais corretas, porém, mais trabalhosa para se implementar.

    1 - Se você quer fazer algo apenas para funcionar, sem ligar para tempo de execução e etc, siga os passos:

     - Crie um função que acesse o GridViews e percorra todas as linhas do mesmo, a cada linha você cria um objeto que receba essas variáveis e assim que receber todas as variáveis você executa o método para salvar essas informações no banco de dados.

    2 - Se você quer algo com performance, extremamente mais rápido que o método acima, siga os passos:

    - Crie um função que acesse o GridViews e percorra todas as linhas do mesmo, a cada linha você adiciona numa variável StringBuilder, exemplo : texto.Append("italo;23;80000;italo.biguzzi&&&"); com isso, todas as linhas vão ser inseridas nessa sequencia, o separador é o &&&, envie essa String inteira para o banco de dados exemplo da linha: "italo;23;80000;italo.biguzzi&&&jose;18;20000;jose.alrmed&&&", lá no banco de dados de um SPLIT e crie um cursor para percorrer todos os valores, nesse caso, 2 registros com as respectivas propriedades, faça um INSERT em cada vez que o Cursor passar.


    Se a resposta foi útil por favor qualifique. Italo Biguzi Duarte, Desenvolvedor ASP.NET C#, Italo.biguzzi@gmail.com

    • Marcado como Resposta ppsantos2002 quinta-feira, 13 de março de 2014 13:56
    quinta-feira, 13 de março de 2014 01:33
  • Santos

    Você tem a coleção vinda do excel para inserir no banco de dados?

    Se sim, fica fácil.

    Basta fazer com que no carregamento dos dados você já faz um insert into no banco de dados.

    Veja o link abaixo, poderá te ajudar.

    http://ecode10.com/article/pesquisar.aspx?q=gridview


    Espero ter ajudado. Se ajudei, favor marcar no fórum falando que foi útil.

    Mauricio Junior - Comunidade www.ecode10.com

    • Marcado como Resposta ppsantos2002 quinta-feira, 13 de março de 2014 13:59
    quinta-feira, 13 de março de 2014 01:11

Todas as Respostas

  • Santos

    Você tem a coleção vinda do excel para inserir no banco de dados?

    Se sim, fica fácil.

    Basta fazer com que no carregamento dos dados você já faz um insert into no banco de dados.

    Veja o link abaixo, poderá te ajudar.

    http://ecode10.com/article/pesquisar.aspx?q=gridview


    Espero ter ajudado. Se ajudei, favor marcar no fórum falando que foi útil.

    Mauricio Junior - Comunidade www.ecode10.com

    • Marcado como Resposta ppsantos2002 quinta-feira, 13 de março de 2014 13:59
    quinta-feira, 13 de março de 2014 01:11
  • ppsantos, boa noite.

    Bom, existem várias formas de se fazer isso. Formas rápidas porém, lentas e que exigem mutias requisições do servidor, existe formas mais corretas, porém, mais trabalhosa para se implementar.

    1 - Se você quer fazer algo apenas para funcionar, sem ligar para tempo de execução e etc, siga os passos:

     - Crie um função que acesse o GridViews e percorra todas as linhas do mesmo, a cada linha você cria um objeto que receba essas variáveis e assim que receber todas as variáveis você executa o método para salvar essas informações no banco de dados.

    2 - Se você quer algo com performance, extremamente mais rápido que o método acima, siga os passos:

    - Crie um função que acesse o GridViews e percorra todas as linhas do mesmo, a cada linha você adiciona numa variável StringBuilder, exemplo : texto.Append("italo;23;80000;italo.biguzzi&&&"); com isso, todas as linhas vão ser inseridas nessa sequencia, o separador é o &&&, envie essa String inteira para o banco de dados exemplo da linha: "italo;23;80000;italo.biguzzi&&&jose;18;20000;jose.alrmed&&&", lá no banco de dados de um SPLIT e crie um cursor para percorrer todos os valores, nesse caso, 2 registros com as respectivas propriedades, faça um INSERT em cada vez que o Cursor passar.


    Se a resposta foi útil por favor qualifique. Italo Biguzi Duarte, Desenvolvedor ASP.NET C#, Italo.biguzzi@gmail.com

    • Marcado como Resposta ppsantos2002 quinta-feira, 13 de março de 2014 13:56
    quinta-feira, 13 de março de 2014 01:33
  • Italo obrigado por sua resposta mas sou bastante leigo ainda na area se voce puder me mandar passo a passo o procedimento eu vou agradecer.

    quinta-feira, 13 de março de 2014 02:19
  • Italo consegui oq voce me disse, agora fiquei com outro problema na hora de passar para a base de dados, veja se consegue me dar um Help, desde ja agradeço a atenção

    carrego ele apartir de um excel, e na hora que vou gravar na base de dados ele da um erro

    Must declare the scalar variable "@Id".

    veja se alguém pode me ajudar.

    var sql = "INSERT INTO TABLE (Id,LOTE,DATA_EVENTO,LOCAL_CIDADE_EVENTO,CODIGO_CONCESSIONARIA,NOME_CONCESSIONARIA,PARTICIPANTE) VALUES (@Id,@LOTE,@DATA_EVENTO,@LOCAL_CIDADE_EVENTO,@CODIGO_CONCESSIONARIA,@NOME_CONCESSIONARIA,@PARTICIPANTE)";
                SqlConnection conn = new SqlConnection(Conexao);
                var cmd = new SqlCommand(sql, conn);
                conn.Open();
                try
                {
                    if (fupArquivo.HasFile)
                    {
                        // Recebe o arquivo em array de bytes
                        byte[] buffer = fupArquivo.FileBytes;
                        // Criar o arquivo em memoria
                        System.IO.MemoryStream stream = new System.IO.MemoryStream(buffer);
                        // Carrega o WorkBook do Excel
                        ExcelLibrary.SpreadSheet.Workbook workbook = ExcelLibrary.SpreadSheet.Workbook.Load(stream);
                        // Recupera o primeiro WorkSheet
                        ExcelLibrary.SpreadSheet.Worksheet worksheet = workbook.Worksheets[0];

                        // Cria uma tabela para armazenar o Excel
                        System.Data.DataTable dtExcel = new System.Data.DataTable();
                        dtExcel.Columns.Add("Id", typeof(int));
                        dtExcel.Columns.Add("DIGITADOR", typeof(string));
                        dtExcel.Columns.Add("LOTE", typeof(int));
                        dtExcel.Columns.Add("DIGITACAO", typeof(string));
                        dtExcel.Columns.Add("DATA_EVENTO", typeof(string));
                        dtExcel.Columns.Add("LOCAL_CIDADE_EVENTO", typeof(string));
                        dtExcel.Columns.Add("REGIONAL", typeof(string));
                        dtExcel.Columns.Add("CODIGO_CONCESSIONARIA", typeof(string));
                        dtExcel.Columns.Add("NOME_CONCESSIONARIA", typeof(string));
                        dtExcel.Columns.Add("PARTICIPANTE", typeof(string));
                        dtExcel.Columns.Add("PRESENCA", typeof(string));
                        dtExcel.Columns.Add("CADASTRO", typeof(string));

                        // Percorre as linhas do Excel
                        for (int rowIndex = worksheet.Cells.FirstRowIndex; rowIndex <= worksheet.Cells.LastRowIndex; rowIndex++)
                        {
                            // Recupera a linha do Excel
                            ExcelLibrary.SpreadSheet.Row row = worksheet.Cells.GetRow(rowIndex);

                            // Adiciona os dados na tabela
                            System.Data.DataRow newRow = dtExcel.NewRow();
                            newRow["Id"] = row.GetCell(0).StringValue;
                            newRow["DIGITADOR"] = row.GetCell(1).StringValue;
                            newRow["LOTE"] = row.GetCell(2).StringValue;
                            newRow["DIGITACAO"] = row.GetCell(3).StringValue;
                            newRow["DATA_EVENTO"] = row.GetCell(4).StringValue;
                            newRow["LOCAL_CIDADE_EVENTO"] = row.GetCell(5).StringValue;
                            newRow["REGIONAL"] = row.GetCell(6).StringValue;
                            newRow["CODIGO_CONCESSIONARIA"] = row.GetCell(7).StringValue;
                            newRow["NOME_CONCESSIONARIA"] = row.GetCell(8).StringValue;
                            newRow["PARTICIPANTE"] = row.GetCell(9).StringValue;
                            newRow["PRESENCA"] = row.GetCell(10).StringValue;
                            newRow["CADASTRO"] = row.GetCell(11).StringValue;

                            dtExcel.Rows.Add(newRow);
                        }

                        // Adicona a tabela com os dados do Excel no Grid
                        gridExcelProcessado.DataSource = dtExcel;
                        gridExcelProcessado.DataBind();
                       cmd.ExecuteNonQuery();




                    }

    quinta-feira, 13 de março de 2014 13:58
  • ppSantos2002, boa tarde.

    você definiu que o valor ID é um inteiro, portanto na hora que você for jogar o valor na coluna, de um Convert.ToInt(value);

     // Adiciona os dados na tabela
                            System.Data.DataRow newRow = dtExcel.NewRow();
                            newRow["Id"] = Convert.ToInt(row.GetCell(0).StringValue);


    Se a resposta foi útil por favor qualifique. Italo Biguzi Duarte, Desenvolvedor ASP.NET C#, Italo.biguzzi@gmail.com

    sexta-feira, 14 de março de 2014 20:57