Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #59 da revista programar. Faz já o download aqui!

Montesuma

Inserir dados do Tipo Data e Moeda de um maskedTextBox no MySQL

Mensagens Recomendadas

Montesuma    0
Montesuma

Olá a todos, estou tentando inserir os dados digitados de um objeto maskedTextBox, um do tipo Data e outro do tipo Moeda, no banco de Dados MySQL, onde possuo uma tabela chamada teste, criada conforme comando abaixo:

CREATE TABLE `teste`
(
`tes_id` Int NOT NULL AUTO_INCREMENT
`tes_data` Date,
`tes_preco` Decimal,
PRIMARY KEY (`tes_id`)
)

O meu formulário, criado no Visual Studio Community Edition 2015, tenho um botão salvar que tem o código abaixo:

	 if (incluir)
	 {
		 string sqlInsert = "INSERT INTO teste (tes_data, tes_preco) " + "VALUES (STR_TO_DATE(@TesData,'%d/%m/%Y'), @TesPreco)";
		 MySqlConnection con = new MySqlConnection(conexaoMySQL);
		 MySqlCommand cmd = new MySqlCommand(sqlInsert, con);
		 cmd.Parameters.AddWithValue("@TesData", txtTes_Data.Text);
		 cmd.Parameters.AddWithValue("@TesPreco", txtTes_Preco.Text);
		 cmd.CommandType = CommandType.Text;
		 con.Open();
		 try
		 {
			 int i = cmd.ExecuteNonQuery();
			 if (i > 0) MessageBox.Show("Dado Incluido com Sucesso !!!!");
		 }
		 catch (Exception ex)
		 {
			 MessageBox.Show("Erro: " + ex.ToString());
		 }
		 finally
		 {
			 con.Close();
		 }
	 }
	 else
	 {
		 string sqlAlterar = "UPDATE teste SET str_to_date(@TesData,'%d/%m/%Y'), tes_preco=@TesPreco WHERE tes_id=@TesId";
		 MySqlConnection con = new MySqlConnection(conexaoMySQL);
		 MySqlCommand cmd = new MySqlCommand(sqlAlterar, con);
		 cmd.Parameters.AddWithValue("@TesId", txtTes_Id.Text);
		 cmd.Parameters.AddWithValue("@TesData", txtTes_Data.Text);
		 cmd.Parameters.AddWithValue("@TesPreco", txtTes_Preco.Text);
		 cmd.CommandType = CommandType.Text;
		 con.Open();
		 try
		 {
			 int i = cmd.ExecuteNonQuery();
			 if (i > 0)
				 MessageBox.Show("Dado Atualizado com Sucesso !!!!");
		 }
		 catch (Exception ex)
		 {
			 MessageBox.Show("Erro: " + ex.ToString());
		 }
		 finally
		 {
			 con.Close();
		 }
	 }
	 tsbIncluirTes.Enabled = true;
	 tsbSalvarTes.Enabled = false;
	 tsbCancelarTes.Enabled = false;
	 tsbExcluirTes.Enabled = false;
	 tstBuscarTesId.Enabled = true;
	 tsbBuscarTeste.Enabled = true;
	 txtTes_Data.Enabled = false;
	 txtTes_Preco.Enabled = false;
	 txtTes_Id.Text = "";
	 txtTes_Data.Text = "";
	 txtTes_Preco.Text = "";

Ao clicar no botão salvar, vem a seguinte mensagem de erro do MySQL, conforme abaixo:

Erro: MySql.Data.MySqlClient.MySqlException (0x80004005): You have on error in your SQl syntax; check the manual that corresponds to your MySQl server version for the right syntax to use near '('11/03/1965','%d/%m/f%Y'),. tes_preco='l,5'
WHERE tes_id= '" at line 1
em MySql.Data.MySqlClient.MySqlStream.ReadPacket()
em MySqI.Data.MySqlClient.NativeDriver.GetResult(lnt32& affectedRow, Int64& insertedId)
em MySql.Data.MySqlClient.Driver.GetResult(lnt32l statementId, Int32& affectedRows, Int64& insertedId)
em MySql.Data.MySqlClient.Driver.NextResult(lnt32 statementId, Boolean force)
em MySql.Data.MySqlClient.MySqlDataReader.NextResult()
em MySql.Data.MySqlClient.MySqICommand.ExecuteReader(CommandBehavior behavior)
em MySql.Data.MySqlClient.MySqICommand.ExecuteNonQuery()
em Teste_Mascara_Data_Preco.Form1.TsbSalvarTes.Clck(Object sender,
EventArgs e) na C:\Users\profe\Documents\VisualStudio2015\Projects\Teste_Mascara_Data_Preco\Teste_Mascara_Data_Preco\Form1.cs:linha 76

Aos mestres peço com humildade, onde estou errando????

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
vikcch    17
vikcch

Boas,

falta o nome do campo tes_data na query:

UPDATE teste SET tes_data=str_to_date(@TesData,'%d/%m/%Y'), tes_preco=@TesPreco WHERE tes_id=@TesId

Eu fazia mais ou menos assim:

	    private void UpdateOnTable()
    {
	    string query = "UPDATE teste SET tes_data=str_to_date(@TesData,'%d/%m/%Y'), tes_preco=@TesPreco WHERE tes_id=@TesId";

	    MySqlParameter[] parameters = {
		    new MySqlParameter("@TesId", txtTes_Id.Text),
		    new MySqlParameter("@TesData", txtTes_Data.Text),
		    new MySqlParameter("@TesPreco",txtTes_Preco.Text)		    
	    };

	    if (RunExecuteNonQuery(query, parameters) == 1)
		    MessageBox.Show("Dados Atualizados com Sucesso !!!!");
	    else
		    MessageBox.Show("Problemas  ");
    }


    public int RunExecuteNonQuery(string query, MySqlParameter[] parameters)
    {
	    try
	    {
		    using (MySqlConnection con = new MySqlConnection(connString))
		    {
			    con.Open();
			    using (MySqlCommand cmd = new MySqlCommand(query, con))
			    {
				    cmd.Parameters.AddRange(parameters);
				    return cmd.ExecuteNonQuery();
			    }
		    }
	    }
	    catch (Exception ex)
	    {
		    MessageBox.Show("Erro: " + ex.ToString());
		    return -1;
	    }
    }

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.