c# requete parametree

c# requete parametree - C#/.NET managed - Programmation

Marsh Posté le 14-07-2006 à 20:50:19    

bjr voici mon probleme :  
j invite l utilisateur a entrer du texte dans la  bd mais  il arrive que l utilisateur  doivent  encoder  
des caracteres tels que  ' ou "  hors ceci est interprete comme une commande  
donc si qq un a  une idee  pour remedie a ce probleme , voici la ligne  
 

Code :
  1. ...
  2. DbCommand oCmd = oConn.CreateCommand();
  3. oCmd.CommandText = "INSERT INTO CD (Titre,Groupe,Style,CD_DVD) VALUES('" + textBox1.Text + "','" + lbGroupeCd.SelectedItem.ToString() + "','" + lbStyleCd.SelectedItem.ToString() + "'," + checkBox2.Checked + " )";
  4. ...


Message édité par kelk 1 le 20-07-2006 à 19:13:17
Reply

Marsh Posté le 14-07-2006 à 20:50:19   

Reply

Marsh Posté le 15-07-2006 à 00:55:41    

oui, tu dégages tes concaténations de chaines, et tu utilises des requetes paramétrées à la place
http://msdn2.microsoft.com/en-us/l [...] epare.aspx


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 15-07-2006 à 14:28:46    

donc si j ai bien compris tu dis que je dois enlever  les symboles ' et " ( du texbox.text )avant de faire ma requete, si c est bien ce que tu voulais dire ça me gene un peu car je voulais quand mm stocker  par exemple  : l 'effet papillon  dans ma bd , sinon requete parametre  j ai jms fais  
, ça va changer quoi exactement ?
 
 
edit : ok je pense avoir trouve et compris merci  
 
http://webman.developpez.com/artic [...] ter/vbnet/


Message édité par kelk 1 le 15-07-2006 à 21:14:37
Reply

Marsh Posté le 16-07-2006 à 17:54:38    

Harkonnen a écrit :

oui, tu dégages tes concaténations de chaines, et tu utilises des requetes paramétrées à la place
http://msdn2.microsoft.com/en-us/l [...] epare.aspx


les requetes paramétrées sont effectivement conseillées, ne serait-ce que pour la faille d'injection SQL :jap:


---------------
༼ つ ◕_◕ ༽つ
Reply

Marsh Posté le 23-07-2006 à 19:22:45    

bon je sais pas si ça peut aider qq' un ,  mais voila ce que j ai  :  
 

Code :
  1. try
  2.                 {
  3.                 // fabrique de classe  pour le provider qui m interesse ( acces dans mon cas )
  4.                     DbProviderFactory dbpf = DbProviderFactories.GetFactory("System.Data.OleDb" );
  5.                  
  6.                 //objet de connection: dbconnection, classe abstraite, on programme de maniere + generique commme ça  
  7.                     DbConnection oConn = dbpf.CreateConnection();
  8.                     oConn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\Lcd\LCD.mdb";
  9.                     String RequeteSql = "INSERT INTO CD (Titre,Groupe,Style,CD_DVD) VALUES (@Titre,@Groupe,@Style,@CD_DVD)";
  10.                     DbCommand MyCommande = dbpf.CreateCommand();
  11.                     MyCommande.Parameters.Clear();
  12.                     MyCommande.CommandText = RequeteSql ;
  13.                     MyCommande.Connection = oConn;
  14.                 // 1 er parametre titre
  15.                     DbParameter dbp = dbpf.CreateParameter();
  16.                     dbp.ParameterName = "@Titre";
  17.                     dbp.DbType = DbType.String;
  18.                     dbp.Value = textBox1.Text.ToString() ;
  19.                     MyCommande.Parameters.Add(dbp);
  20.                 // 2 eme parametre groupe
  21.                     dbp = dbpf.CreateParameter();
  22.                     dbp.ParameterName = "@Groupe";
  23.                     dbp.DbType = DbType.String;
  24.                     dbp.Value = lbGroupeCd.SelectedItem.ToString() ;
  25.                     MyCommande.Parameters.Add(dbp);
  26.                 // 4 eme parametre style
  27.                     dbp = dbpf.CreateParameter();
  28.                     dbp.ParameterName = "@Style";
  29.                     dbp.DbType = DbType.String;
  30.                     dbp.Value = lbStyleCd.SelectedItem.ToString() ;
  31.                     MyCommande.Parameters.Add(dbp);
  32.                 // 4 eme parametre cd_dvd
  33.                     dbp = dbpf.CreateParameter();
  34.                     dbp.ParameterName = "@CD_DVD";
  35.                     dbp.DbType = DbType.Boolean ;
  36.                     dbp.Value = checkBox2.Checked ;
  37.                     MyCommande.Parameters.Add(dbp);
  38.         // execution de la commande  
  39.                     MyCommande.Connection.Open();
  40.                     MyCommande.ExecuteNonQuery();
  41.                     MyCommande.Connection.Close();
  42.                    
  43.         // effacer et selectionner le  1er  item  pour dire oki,  l enregistrement  est dans la bd  
  44.                     lbGroupeCd.SelectedIndex = 0;
  45.                     lbStyleCd.SelectedIndex = 0;
  46.                     textBox1.Text = "";
  47.                 }
  48.                 catch (FileNotFoundException)
  49.                 {
  50.                     MessageBox.Show("Base de donnée ?!! ou est t-elle ?", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
  51.                 }
  52.                 catch (DbException de)
  53.                 {
  54.                     MessageBox.Show("Erreur BD : "+de, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
  55.                 }


 
 
edit : je viens tt juste de tester avec l 'effet papillon  et ça marche nickel , je  dis merci a tt ceux qui ont fille des liens  dont damien  qui  n a rien ecris ici mais sur msn ;-)


Message édité par kelk 1 le 24-07-2006 à 17:23:54
Reply

Marsh Posté le 23-07-2006 à 20:35:20    

et merci aussi à celui qui t'a aiguillé vers les requetes paramétrées peut etre ? [:itm]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 24-07-2006 à 08:23:32    

Harkonnen a écrit :

et merci aussi à celui qui t'a aiguillé vers les requetes paramétrées peut etre ? [:itm]


t'es en manque de reconnaissance ? :D


---------------
༼ つ ◕_◕ ༽つ
Reply

Marsh Posté le 24-07-2006 à 17:22:53    

waip deso si j ai oublie

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed