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

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):
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:
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
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 -
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
- Editado Rafael Assaad domingo, 14 de agosto de 2016 00:44
-
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 -
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
A vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel
-
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 -
-
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