none
Como salvar a data no banco de dados SQL SERVER (a partir de uma label) - Windows Form RRS feed

  • Discussão Geral

  • Olá, amigos!

    Estou tentando salvar a data a partir de uma label (estou usando: labelDATA.Text = DateTime.Now.ToShortDateString();) no banco de dados SQL SERVER.

    Esta imagem é do form Entrada (para entrada de produtos nos sistema):
    Form Entrada

    Esse é o código do botão Gravar:
     private void button1_Click(object sender, EventArgs e)
            {
                //Cria uma conexão com o Banco de dados
                SqlConnection conexao = new SqlConnection(@"Data Source=MATEUSANDRADE;Initial Catalog=TESTE;Integrated Security=True");
    
                //Cria o SqlCommand "comm" que será usado junto a conexão criada acima
                SqlCommand comm = new SqlCommand();
                comm.Connection = conexao;
                
                conexao.Open();
    
                foreach (ListViewItem item in listDADOS.Items)
                {
                    //CRIA STRING DE ACORDO COM A LISTVIEW
                    string CODIGO = item.SubItems[1].Text;
                    string DESCRICAO = item.SubItems[2].Text;
                    string QTD = item.SubItems[3].Text;
                    string UNT = item.SubItems[4].Text;
                    string MAC = item.SubItems[5].Text;
                    
    
                    //Cria o comando SQL e específica os valores de entrada
                    comm.CommandText = "INSERT INTO ESTOQUE (CÓDIGO, DATA_ENTRADA, DESCRIÇÃO, QTD, UNT, MAC) VALUES ('" + CODIGO + "','"+labelDATA.Text+ "','" + DESCRICAO + "','" + QTD + "','" + UNT + "','" + MAC + "')";
                    comm.ExecuteNonQuery();
    
                }
    
                //CASO SEJAM SALVOS NO BANCO DE DADOS MOSTRARÁ A MENSAGEM ABAIXO
                try
                {
                    int i = comm.ExecuteNonQuery();
    
                    if (i > 0)
                        MessageBox.Show("Entrada de Produtos regristada com sucesso!");
    
                }
                //Caso haja algum erro será criada uma MessageBox informando o erro
                catch (Exception ex)
                {
                    MessageBox.Show("Erro:" + ex.ToString());
                }
                finally
                {
                    //Fecha a conexão com o servidor
                    conexao.Close();
                    comm.Dispose();
                }
            }
        }
    }
    No SQL SERVER o campo DATA_ENTRADA está como DATETIME.

    Print do erro:
    Erro - Form Entrada ao salvar data

    Já tentei add parâmetro e nada, continua o mesmo erro:
    comm.Parameters.AddWithValue("@DATA_ENTRADA", Convert.ToDateTime(labelDATA.Text));
    Gente quero salvar essa bendita data no banco de dados mas não estou conseguindo, ME AJUDEEEEM! hehe

    Att, Mateus Andrade

    sábado, 13 de agosto de 2016 13:22

Todas as Respostas

  • Mateus,

    Segundo esse erro, seu valor de data deve estar vindo com algum problema ou vazio.

    Debugue seu código. Coloque um break point e verifique o que tem na sua labelDATA.Text


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    sábado, 13 de agosto de 2016 16:53
  • Prezado Mateus Andrade, boa noite!

    Pela exceção, houve erro ao converter um valor dateTime em string.

    Já que no label, você, apenas, exibe o valor da data atual, tente inserir a data diretamente via parâmetro, exemplo:

         comm.Parameters.AddWithValue(DateTime.Now());

    Obs.: a coluna que recebe a date no BD é do tipo 'date'....


    Cordialmente,

    Rafael Assaad



    domingo, 14 de agosto de 2016 00:43
  • Mateus

    1- Verifique se o formato do banco de dados está em português ou inglês; Dependendo do formato, o banco de dados vai dar erro mesmo.

    2- Verifique como a data está chegando na string para inserir por favor.

    3- Não utilize aspas simples e aspas duplas, utilize parameters com todos os parâmetros.

    4- Substitua barra por traço.

    5- Inverta o mês com a data mm-dd-yyyy

    Se você garantir tudo isso, vai inserir perfeitamente no banco.


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

    Mauricio Junior - Comunidade www.ecode10.com

    segunda-feira, 15 de agosto de 2016 15:32
  • Se a data sempre for a atual não há necessidade de passa-la como parâmetro, coloque direto no script pela funcao GetDate() do próprio Sql Server

    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    terça-feira, 16 de agosto de 2016 12:14
  • Olá Mateus!

    Tudo isso aconteceu porque você tentou concatenar os valores diretamente na sua sentença SQL.. Como alguns colegas já sugeriram aqui, ao invés de concatenar os valores, utilize a funcionalidade de parâmetros do ADO.NET.. Isso evitará esse problema que você está tendo além de diversos outros problemas que você possa vir a ter no futuro (como SQL Injection)..

    Eu explico exatamente os problemas da concatenação de valores e como utilizar parâmetros do ADO.NET neste artigo:

    Parâmetros do ADO.NET: por favor, pare de concatenar strings nas suas sentenças SQL!

    Abraço!


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima

    terça-feira, 16 de agosto de 2016 14:13
    Moderador
  • Pessoal desculpem a demora para responder à todos vocês, estive com alguns problemas e me ausentei por alguns dias! :/

    Gente ainda não consegui, fiz tudo o que vocês sugeriram e nada :/ não sei mais o que tentar :/

    Att, Mateus Andrade

    quinta-feira, 25 de agosto de 2016 11:33
  • Olá Mateus!

    Você tentou utilizar parâmetros conforme eu indiquei no artigo que linkei na minha resposta? Como é que ficou o seu código?


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima

    quinta-feira, 25 de agosto de 2016 14:52
    Moderador