Partage
  • Partager sur Facebook
  • Partager sur Twitter

sécuriser l'insert avec requete preparé

Sujet résolu
    4 janvier 2019 à 21:20:57

    bonjour

    ma question est simple : comment utiliser les requete preparees si je fais appel a une methode dans ma classe database pour ajouter des éléments :

    Database data = new Database();
    Query = "insert into Table(column1, col2, col3) values('" + valeur1 + "', '" + valeur2+ "', '" + valeur3 + "')";
    data.OpenDatabase();
    data.Execute(Query);
    data.CloseDatabase();
    //classe database
    public void Execute(string query)
    {
       SQLiteCommand command = new SQLiteCommand(query, db);
       command.ExecuteNonQuery();
    }



    Merci de votre aide

    • Partager sur Facebook
    • Partager sur Twitter
      7 janvier 2019 à 9:31:37

      Bonjour,

      C'est un manque de recherches j'ai l'impression ...

      Tu recherches les requêtes préparées en c# et tu vas trouver facilement ta réponse.

      On est là pour aider, pas pour te mâcher le travail ^^

      o/

      -
      Edité par Nairowyn 7 janvier 2019 à 9:32:23

      • Partager sur Facebook
      • Partager sur Twitter
      Insanity is doing the exact same fuckin' thing over and over again, expecting shit to change...
        10 janvier 2019 à 14:55:32

        Ca se voit que t'as pas pris le temps de lire mon post mais juste de me clasher, je sais comment faire une requete preparée mais je voulais savoir comment l'appliquer dans l'example précis que j'ai donné.

        bouffon

        • Partager sur Facebook
        • Partager sur Twitter
          10 janvier 2019 à 15:35:43

          FrancisMagusse a écrit:

          bouffon

          Un plaisir ! :D

          Sinon le bouffon t'a mâché le travail puisque t'es trop branleur pour rechercher sur Google "sqlite command prepare c#" et je t'ai trouvé ça (C'est le 4ème lien, j'ai galéré un peu ...) : http://zetcode.com/db/sqlitecsharp/intro/

          Bon, il faut descendre dans la page jusqu'au titre "Prepared statements", j'avoue c'est chaud ...

          Donc j'ai pondu ce code rapidement, je ne l'ai pas testé, il faudra peut-être faire quelques modifications parce qu'il faut que tu bosses un peu, ça serait trop facile sinon ;)

          En tout cas, n'hésite pas si tu as d'autres questions ou que tu rencontres des soucis avec ce que je t'ai fait ! Je me ferai un plaisir de t'aider :)

          Database data = new Database();
          data.OpenDatabase();
          data.Execute();
          data.CloseDatabase();
          
          public void Execute() 
          {
          	//code d'ouverture de ta SqliteConnection "db"
          
          	db.Open();
          
          	using (SqliteCommand command = new SqliteCommand(db))
          	{
          		command.CommandText = "insert into Table(column1, col2, col3) values('@FirstValue', '@SecondValue', '@ThirdValue')";
          		command.Prepare();
          
          		command.Parameters.AddWithValue("@FirstValue", "toto");
          		command.Parameters.AddWithValue("@SecondValue", "tata");
          		command.Parameters.AddWithValue("@ThirdValue", "titi");
          
          		command.ExecuteNonQuery();
          	}
          
          	db.Close();
          }


          o/

          • Partager sur Facebook
          • Partager sur Twitter
          Insanity is doing the exact same fuckin' thing over and over again, expecting shit to change...
            10 janvier 2019 à 17:04:55

            t'es vraiment nul, tu m'apprends rien la car tu utilises pas de classe database comme je l'ai montré dans le premier exemple.

            apprends à lire les questions si tu veux aider

            Ce que je veux dire c'est comment rendre dynamiquement le nombres de values a inserer via la classe database

            -
            Edité par FrancisMagusse 10 janvier 2019 à 17:07:24

            • Partager sur Facebook
            • Partager sur Twitter
              10 janvier 2019 à 18:02:25

              Bonjour à tous,

              Alors on va se calmer un peu car la tonalité de vos échanges n'est pas idéale pour avancer ... Merci de descendre d'un cran (ou plus) en pression avant de reprendre la discussion ...

              @FrancisMagusse, je pense que la proposition de Nairowyn est à regarder avec plus d'attention avant de critiquer (avec un langage plutôt innaproprié) ...

              FrancisMagusse a écrit:

              je sais comment faire une requete preparée mais je voulais savoir comment l'appliquer dans l'example précis que j'ai donné

              Nayrowin utilise bien la classe Database et te montre l'exécution d'une requête préparée, ce que tu ne faisais pas dans le code de ton premier message.

              FrancisMagusse a écrit:

              comment rendre dynamiquement le nombres de values a inserer via la classe database

              Cela est une nouvelle question que l'on ne pouvait pas deviner au départ ...

              Je pense qu'il faut voir les choses autrement ... car vouloir rendre dynamique le nombre de paramètres d'une requête préparée ouvre la porte à la question "pourquoi ?" ... Si tu ne connais pas le nombre de paramètres c'est que tu veux généraliser tes requêtes et tu vas rencontrer des problèmes de sécurité (injection SQL) et de maintenabilité ... Si tu utilises un langage orienté objet comme C#, il faut te poser la question de l'héritage et des classes spécifiques représentant les objets que tu veux stocker en base ...

              • Partager sur Facebook
              • Partager sur Twitter
              Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                10 janvier 2019 à 18:21:22 - Message modéré pour le motif suivant : Message complètement hors sujet


                  10 janvier 2019 à 19:29:06 - Message modéré pour le motif suivant : Message complètement hors sujet


                    10 janvier 2019 à 19:51:51

                    On n'est pas dans ta tête et en regardant objectivement ton post initial, la réaction de @Nairowyn est largement justifier, un manque complet de recherche.

                    Après, qu'il y est un problème de génération dynamique de code SQL (burk!) et pas un problème de "requêtes préparées/paramétrés", on peut pas le deviné.

                    L'erreur initiale, elle est chez vous, ne vous en déplaise.

                    Et @Nairowyn, c'est vraiment une bonne patte, moi, je vous aurais laissé dans votre ....

                    Après, je ne vois pas pourquoi une simple boucle n'arriverait pas à générer la requête dynamique (via une simple concaténation basique), aussi bien via votre bricolage immonde, que via une requête paramétrée bien carrée comme celle de @Nairowyn.

                    (mais bon, les performances du SQL dynamique, comment dire, ...)

                    Donc, on n'en revient au même, manque de recherche ou manque d'explicitation du problème.

                    Parce que, une simple concaténation de chaine, c'est la BASE.

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                      10 janvier 2019 à 20:37:23

                      Bonjour,

                      Sujet résolu

                      Tu a passé le sujet à "résolu", mais tu n'as pas partagé ta solution avec la communauté ... Un petit retour sur ce que tu as finalement mis en œuvre serait intéressant pour la postérité ...

                      • Partager sur Facebook
                      • Partager sur Twitter
                      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL

                      sécuriser l'insert avec requete preparé

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown