none
Ajuda com erro de systax sql RRS feed

  • Pergunta

  • bom boa noite pessoal estou com um erro de syntax sql quando vou excluir um registro o MySqlException me retorna este erro

    eu coloquei um breakPoint pra ver o que o MySqlCommando estava tentando executar e vi este resultado

    vou postar o codigo para analise 

     private void ExcluirDados()
            {
                string strConnection = "Server=localhost;Database=sgoconsultorio;Uid=root;Pwd=224466;";
                string strSQL = "DELETE FROM usuario WHERE =  '"+ txtcodigo.Text +"' ";
                MySqlConnection con = new MySqlConnection(strConnection);
                MySqlCommand cmdExcluir = new MySqlCommand(strSQL, con);
                try
                {
                    con.Open();
                    cmdExcluir.ExecuteNonQuery();
                    MessageBox.Show("Dados Excluidos com sucesso.");
                }
                catch (MySqlException myex)
                {
    
                    MessageBox.Show("Error: " + myex.Message);
                }
    
            }

    o que esta errado  no código porque esta me retornando este erro ? e como posso resolve-lo?


    • Editado draw4soft sexta-feira, 15 de abril de 2016 21:06
    sexta-feira, 15 de abril de 2016 21:05

Respostas

  • Seu comando sql está errado, falta adicionar o campo " string strSQL = "DELETE FROM usuario WHERE =  '"+ txtcodigo.Text +"' ";";

    Exemplo se for o campo "IdUsuario"

     string strSQL = "DELETE FROM usuario WHERE = IdUsuario  '"+ txtcodigo.Text +"' ";

    Do jeito que seu código está hoje, você pode sofrer um ataque de sql injection, correto seria:

     

               string strSQL = "DELETE FROM usuario WHERE IdUsuario = @IDUSUARIO";
                MySqlConnection con = new MySqlConnection(strConnection);
                MySqlCommand cmdExcluir = new MySqlCommand(strSQL, con);
       
       cmdExcluir.Parameters.Add(SqlParameter("@IDUSUARIO", txtcodigo.Text));

                try
                {
                    con.Open();
                    cmdExcluir.ExecuteNonQuery();
                    MessageBox.Show("Dados Excluidos com sucesso.");
                }
                catch (MySqlException myex)
                {

                    MessageBox.Show("Error: " + myex.Message);
                }

    sexta-feira, 15 de abril de 2016 21:59

Todas as Respostas

  • Seu comando sql está errado, falta adicionar o campo " string strSQL = "DELETE FROM usuario WHERE =  '"+ txtcodigo.Text +"' ";";

    Exemplo se for o campo "IdUsuario"

     string strSQL = "DELETE FROM usuario WHERE = IdUsuario  '"+ txtcodigo.Text +"' ";

    Do jeito que seu código está hoje, você pode sofrer um ataque de sql injection, correto seria:

     

               string strSQL = "DELETE FROM usuario WHERE IdUsuario = @IDUSUARIO";
                MySqlConnection con = new MySqlConnection(strConnection);
                MySqlCommand cmdExcluir = new MySqlCommand(strSQL, con);
       
       cmdExcluir.Parameters.Add(SqlParameter("@IDUSUARIO", txtcodigo.Text));

                try
                {
                    con.Open();
                    cmdExcluir.ExecuteNonQuery();
                    MessageBox.Show("Dados Excluidos com sucesso.");
                }
                catch (MySqlException myex)
                {

                    MessageBox.Show("Error: " + myex.Message);
                }

    sexta-feira, 15 de abril de 2016 21:59
  • Seu comando sql está errado, falta adicionar o campo " string strSQL = "DELETE FROM usuario WHERE =  '"+ txtcodigo.Text +"' ";";

    Exemplo se for o campo "IdUsuario"

     string strSQL = "DELETE FROM usuario WHERE = IdUsuario  '"+ txtcodigo.Text +"' ";

    Do jeito que seu código está hoje, você pode sofrer um ataque de sql injection, correto seria:

     

               string strSQL = "DELETE FROM usuario WHERE IdUsuario = @IDUSUARIO";
                MySqlConnection con = new MySqlConnection(strConnection);
                MySqlCommand cmdExcluir = new MySqlCommand(strSQL, con);
       
       cmdExcluir.Parameters.Add(SqlParameter("@IDUSUARIO", txtcodigo.Text));

                try
                {
                    con.Open();
                    cmdExcluir.ExecuteNonQuery();
                    MessageBox.Show("Dados Excluidos com sucesso.");
                }
                catch (MySqlException myex)
                {

                    MessageBox.Show("Error: " + myex.Message);
                }

    pra ficar seguro simplismente seriua fazer isto 
     cmdExcluir.Parameters.Add("@idUsuario", txtcodigo.Text);

    sábado, 16 de abril de 2016 01:20
  • bom boa noite pessoal estou com um erro de syntax sql quando vou excluir um registro o MySqlException me retorna este erro

    eu coloquei um breakPoint pra ver o que o MySqlCommando estava tentando executar e vi este resultado

    vou postar o codigo para analise 

     private void ExcluirDados()
            {
                string strConnection = "Server=localhost;Database=sgoconsultorio;Uid=root;Pwd=224466;";
                string strSQL = "DELETE FROM usuario WHERE =  '"+ txtcodigo.Text +"' ";
                MySqlConnection con = new MySqlConnection(strConnection);
                MySqlCommand cmdExcluir = new MySqlCommand(strSQL, con);
                try
                {
                    con.Open();
                    cmdExcluir.ExecuteNonQuery();
                    MessageBox.Show("Dados Excluidos com sucesso.");
                }
                catch (MySqlException myex)
                {
    
                    MessageBox.Show("Error: " + myex.Message);
                }
    
            }

    o que esta errado  no código porque esta me retornando este erro ? e como posso resolve-lo?


    Amigo, falta o WHERE ID = Valor. 

    private void ExcluirDados()
            {
                string strConnection = "Server=localhost;Database=sgoconsultorio;Uid=root;Pwd=224466;";
                string strSQL = "DELETE FROM usuario WHERE ID =  '"+ txtcodigo.Text +"' ";
                MySqlConnection con = new MySqlConnection(strConnection);
                MySqlCommand cmdExcluir = new MySqlCommand(strSQL, con);
                try
                {
                    con.Open();
                    cmdExcluir.ExecuteNonQuery();
                    MessageBox.Show("Dados Excluidos com sucesso.");
                }
                catch (MySqlException myex)
                {
    
                    MessageBox.Show("Error: " + myex.Message);
                }
    
            }

    Para melhor segurança eu faria com parâmetros.  Abraços. Se a resposta foi útil, marque como resposta.

    sábado, 16 de abril de 2016 15:50