Jump to content
Montesuma

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

Recommended Posts

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????

Share this post


Link to post
Share on other sites
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;
	    }
    }

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.