Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá, bom dia pessoal.
Estou tendo dificuldades ao inserir informações via c# para o banco MySQL.
Como todos sabem, quando se cria uma tbl com campo DateTime no MySQL, ele vem em padrão americano 2017-10-04 'exemplo'
Meu problema é o seguinte.
Eu faço um select em um banco SQL Server e puxo essas informações para um DataGrid com os campos que necessito.
Após isso, o sistema vai levar esse datagrid e gravar as informações contidas nele para o banco MySQL fazendo o insert nesse trecho do código:
for (int i = 0; i < dvgOrdens.Rows.Count - 1; i++)
{
string ordem = dvgOrdens.Rows[i].Cells[1].Value.ToString(); //ordem
string pedido = dvgOrdens.Rows[i].Cells[2].Value.ToString(); //pedido
string operacao = dvgOrdens.Rows[i].Cells[3].Value.ToString(); //operacao
string item = dvgOrdens.Rows[i].Cells[4].Value.ToString(); //item
string data_limite = dvgOrdens.Rows[i].Cells[5].Value.ToString(); //Data Limite
DateTime data = Convert.ToDateTime(data_limite);
lblItem.Text = item;
this.Refresh();
//Inseri os valores na tabala do Andon
string sql_insert = "INSERT INTO pixie_andon_nc (ordem, cod_item, operacao, pedido, inicio_prev, fim_prev) VALUES ('" + ordem + "', '" + item + "', '" + operacao + "', '" + pedido + "', '" + "STR_TO_DATE" + "("+ data +")" + "', '" + data + "')";
MySqlCommand cmd = new MySqlCommand(sql_insert, mConn);
cmd.ExecuteNonQuery();
}
Ele está inserindo Ok as informações, porém, a Data Limite da Cells[5] ele está gravando como: 00/00/0000 00:00:00 e no meu datagrid quando puxo do SQL SErver a informação, ela está vindo como: 04/10/2017 (exemplo).
A dúvida é: o campo do MYSQL é DateTime ou seja, Data e Hora. porém, eu só preciso da Data que vem do datagrid '04/10/2017' porque a hora vai ser editável pelo usuário depois, ou seja a hora ele pode manter 00:00:00, ficando assim: 04/10/2017 00:00:00, o que eu posso fazer para resolver esse problema?Cara, normalmente eu procuro passar as datas no formato YYYY-MM-DD, separados pelo "-", eu aprendí que esse é um formato quase que universal
Galera, boa tarde
Consegui resolver mudando a conversão direto na hora de setar a celula para a variavel.
Segue solução prática para quem precisar
string data = Convert.ToDateTime(dvgOrdens.Rows*.Cells[5].Value).ToString("yyy-MM-dd"); //Data Limite
*
Você consegue inserir direto no banco, sem ser pela aplicação ?
Se criar um insert na mão como faria ?