none
Problème d'insertion dans une base sql server language c# RRS feed

  • Question

  • Bonjour Gilles TOURREAU , je suis entrain de toujours travailler sur mon site web. Cependant j'aimerai y faire un forum

    Il se trouve que j'ai maintenant besoin de faire une requête d'insertion dans ma base de donnée sql server dans une table Forum.

    Je vous forward le  code:

     SqlConnection conn = new SqlConnection();
    
          conn.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=D:\CRT - Copie\App_Data\Crt_Db.mdf;Integrated Security=True;User Instance=True";
          conn.Open();
    
          //Recuperation du label du dataReapeater
          int id= 1;
          string mes = "bonne nuit";
          string quand = "mardi";
          string log = "bigBoss";
          string Email= "b@ua.fr";
    
          string requete = "insert into Forum (ID,Message,Quand,Login,Email) value("+ id +","+ mes +","+ quand +","+ log +","+ Email +")";
    
    
          SqlCommand cmd = new SqlCommand(requete, conn);
    
          cmd.ExecuteNonQuery();
          cmd.Dispose();
    
          conn.Close();
          conn.Dispose();
    
    

    Rien ne fonctionne ma base de donnée n'est rien affectée.

    Merci d'avance pour m'élucider le chemin.  


    programmation c# et asp_net 2.0
    mardi 12 octobre 2010 12:49

Réponses

  • Bonjour,

    La concaténation de chaîne de caractères d'une requête SQL est fortement déconseillée (c'est la source n°1 des failles de sécurité sur les sites web !).

    using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=D:\CRT - Copie\App_Data\Crt_Db.mdf;Integrated Security=True;User Instance=True"))
    {
      conn.Open();
    
      //Recuperation du label du dataReapeater
      int id = 1;
      string mes = "bonne nuit";
      string quand = "mardi";
      string log = "bigBoss";
      string Email = "b@ua.fr";
    
      string requete = "insert into Forum (ID,Message,Quand,Login,Email) value(@id,@mes,@quand,@log,@Email)";
    
            
      SqlCommand cmd = new SqlCommand(requete, conn);
    
      cmd.Parameters.AddWithValue("id", id);
      cmd.Parameters.AddWithValue("mes", mes);
      cmd.Parameters.AddWithValue("quand", quand);
      cmd.Parameters.AddWithValue("log", log);
      cmd.Parameters.AddWithValue("Email", Email);
    
      cmd.ExecuteNonQuery();
      cmd.Dispose();
    }
    

    Cordialement


    Gilles TOURREAU - MVP C# - MCPD Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5 - MCTS ADO .NET 3.5 / SQL Server 2008 Developper - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    • Marqué comme réponse Alex Petrescu jeudi 21 octobre 2010 07:32
    dimanche 17 octobre 2010 16:56
    Modérateur

Toutes les réponses

  • Bonjour,

    Votre requête INSERT ne respecte pas la syntaxe SQL. Pouvez-vous essayer avec ceci :

       string
     requete = "INSERT INTO Forum (ID,Message,Quand,Login,Email) VALUES ("
    + id +","
    + mes +","
    + quand +","
    + log +","
    + Email +")"
    ;

    Hormis l'utilisation de majuscule, qui permet de lire plus facilement les requêtes, j'ai ajouté un "s" à "value" -> "VALUES".

    référence : http://msdn.microsoft.com/fr-fr/library/ms174335%28SQL.90%29.aspx

    Bonne journée,

     

     


    Kind regards, Sebastien G. - Axiomtek Deutschland GmbH
    mercredi 13 octobre 2010 05:42
  • Bonjour,

    La concaténation de chaîne de caractères d'une requête SQL est fortement déconseillée (c'est la source n°1 des failles de sécurité sur les sites web !).

    using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=D:\CRT - Copie\App_Data\Crt_Db.mdf;Integrated Security=True;User Instance=True"))
    {
      conn.Open();
    
      //Recuperation du label du dataReapeater
      int id = 1;
      string mes = "bonne nuit";
      string quand = "mardi";
      string log = "bigBoss";
      string Email = "b@ua.fr";
    
      string requete = "insert into Forum (ID,Message,Quand,Login,Email) value(@id,@mes,@quand,@log,@Email)";
    
            
      SqlCommand cmd = new SqlCommand(requete, conn);
    
      cmd.Parameters.AddWithValue("id", id);
      cmd.Parameters.AddWithValue("mes", mes);
      cmd.Parameters.AddWithValue("quand", quand);
      cmd.Parameters.AddWithValue("log", log);
      cmd.Parameters.AddWithValue("Email", Email);
    
      cmd.ExecuteNonQuery();
      cmd.Dispose();
    }
    

    Cordialement


    Gilles TOURREAU - MVP C# - MCPD Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5 - MCTS ADO .NET 3.5 / SQL Server 2008 Developper - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    • Marqué comme réponse Alex Petrescu jeudi 21 octobre 2010 07:32
    dimanche 17 octobre 2010 16:56
    Modérateur
  •  

    Bonjour,

     

    Harounski, est-ce que votre requête fonctionne maintenant ?

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

    Windows Phone 7

    Astuces pour Visual Studio 2010

    XNA – Développement jeux vidéo

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, WPF

    Café des usages

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     

    mardi 19 octobre 2010 09:23
  • Bonjour Mrs, je suis passé par une autre alternative à savoir les SQLDATASOURCE . Avec ça; oui  elle fonctionne. Mrs Giles m'a deconseiller l'usage, la concaténation de chaîne de caractères d'une requête SQL.

    Merci pour votre attention.

     


    programmation c# et asp_net 2.0
    jeudi 21 octobre 2010 13:59
  • Merci Giles, j'ai pu résoudre le problème avec les sqlDataSource. 

    Merci pour votre attention, merci


    programmation c# et asp_net 2.0
    jeudi 21 octobre 2010 14:01