none
SqlException RRS feed

  • Question

  • Bonjour à tous!

    je connait un problème avec ma requete sql qui me renvois une erreur si j'introduit une donnée avec un apostrophe voici la requete:

    string UpDate = "UPDATE Ecriture SET DateEcriture='" + Date_Ecriture.Value + "',LibEcriture='" + Lib_Ecriture.Text + "',PayBen='" + PayBenef.Text + "' WHERE IdEcriture='" + Id_Ecriture.Text + "'";

    qui n'est pas normalement incorrecte mais je cherche comment echapper le ' ?

    si vous pouvez m'aider

    cordialement!


    ok

    samedi 7 mars 2015 20:25

Réponses

  • Bonjour,

    Il n'y a pas forcément besoins de procédure stockée. Je dirai même que dans ce cas précis, je n'en créérai pas une.

    L'exemple que j'ai fourni se passe justement sans procédure stockée.

    Voici comment cela se traduirait dans votre cas :

    string commandText = "UPDATE Ecriture SET DateEcriture=@DATE_ECRITURE, LibEcriture=@LIB_ECRITURE,PayBen=@PAY_BENEF WHERE IdEcriture=@ID;";
    
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlCommand command = new SqlCommand(commandText, connection);
        command.Parameters.AddWithValue("@DATE_ECRITURE", Date_Ecriture.Value);
        command.Parameters.AddWithValue("@LIB_ECRITURE", Lib_Ecriture.Text);    
        command.Parameters.AddWithValue("@PAY_BENEF", PayBenef.Text);    
        command.Parameters.AddWithValue("@ID", Id_Ecriture.Text);
        
        try
        {
            connection.Open();
            Int32 rowsAffected = command.ExecuteNonQuery();
            Console.WriteLine("RowsAffected: {0}", rowsAffected);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
    Cordialement,

    Kevin BEAUGRAND, Modis FRANCE
    Merci de bien vouloir "Marquer comme réponse", les réponses qui ont résolu votre problème.

    lundi 9 mars 2015 08:20

Toutes les réponses

  • Remplacer l'apostrophe avec deux apostrophes

    Lib_Ecriture.Replace("'", "''");

    A savoir que cette méthode n'est pas conseiller lors de passage des paramètres à une requête sql.

    Essayer d'utiliser la classe SqlParameter.

    Cdt


    Sami CHNITER Software Engineer

    samedi 7 mars 2015 22:19
  • Bonjour CHNITER, vous pouvez me montrer cette syntaxe ? parce que je ne vois pas où le placer SVP

    Cdt


    ok

    dimanche 8 mars 2015 06:58
  • Bonjour,

    Afin de vous éviter des problèmes de sécurité (comme une injection SQL), je vous conseil de passer par des requêtes paramétrées.

    De plus cette manière les problèmes de quotes, de format de numérique ou de dates par exemple seront traitées.

    Plus d'infos :
    Cordialement,

    Kevin BEAUGRAND, Modis FRANCE
    Merci de bien vouloir "Marquer comme réponse", les réponses qui ont résolu votre problème.

    • Proposé comme réponse Anthony.Ryck lundi 9 mars 2015 06:31
    dimanche 8 mars 2015 09:39
  • Bonjour  BEAUGRAND,

    Je viens de voir ça mais j'ai comme l'impression qu'il faudrai une procédure stockée or je n'en ai pas besoin. je ne sais pas s'il me le faut. sinon tu peux m'en proposer une svp

    cdt


    ok

    lundi 9 mars 2015 07:43
  • Bonjour,

    Il n'y a pas forcément besoins de procédure stockée. Je dirai même que dans ce cas précis, je n'en créérai pas une.

    L'exemple que j'ai fourni se passe justement sans procédure stockée.

    Voici comment cela se traduirait dans votre cas :

    string commandText = "UPDATE Ecriture SET DateEcriture=@DATE_ECRITURE, LibEcriture=@LIB_ECRITURE,PayBen=@PAY_BENEF WHERE IdEcriture=@ID;";
    
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlCommand command = new SqlCommand(commandText, connection);
        command.Parameters.AddWithValue("@DATE_ECRITURE", Date_Ecriture.Value);
        command.Parameters.AddWithValue("@LIB_ECRITURE", Lib_Ecriture.Text);    
        command.Parameters.AddWithValue("@PAY_BENEF", PayBenef.Text);    
        command.Parameters.AddWithValue("@ID", Id_Ecriture.Text);
        
        try
        {
            connection.Open();
            Int32 rowsAffected = command.ExecuteNonQuery();
            Console.WriteLine("RowsAffected: {0}", rowsAffected);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
    Cordialement,

    Kevin BEAUGRAND, Modis FRANCE
    Merci de bien vouloir "Marquer comme réponse", les réponses qui ont résolu votre problème.

    lundi 9 mars 2015 08:20
  • Merci beaucoup

     BEAUGRAND Kevin



    ok

    lundi 9 mars 2015 12:51