2008-11-19 8 views
0

Nous utilisions stringstream pour préparer des requêtes select en C++. Mais il nous a été fortement conseillé d'utiliser QUERY PARAMETERS pour soumettre des requêtes db2 sql afin d'éviter d'utiliser stringstream. Quelqu'un peut-il partager ce que signifie exactement par paramètre de requête en C++? En outre, partagez quelques extraits de code pratiques.Qu'est-ce qu'un "paramètre de requête" en C++?

Appréciez l'aide à l'avance.

Éditer: Il s'agit d'une chaîne et non d'un flux.

Merci, Mathew Liju

+0

Cette question se rapporte à SQL, C++ non; mais je ne suis pas un expert SQL, alors je vais laisser les autres répondre à la question. :-) –

+0

oh je vois. bien ma réponse est sans valeur alors. Je vais le supprimer :) –

+0

Votre réponse était également utile. Merci :-) –

Répondre

3

Je soupçonne que cela fait référence à des requêtes paramétrées en général, plutôt que de construire la requête dans une chaîne, ils fournissent des variables SQL (ou paramètres), puis passer ces variables séparément. Ce sont beaucoup mieux pour gérer les attaques d'injection SQL. Pour illustrer par un exemple:

"SELECT * FROM Customers WHERE CustomerId = " + _customerId; 

est mauvais, alors que ceci:

"SELECT * FROM Customers where CustomerId = @CustomerId" 

est bon. Le hic est que vous devez ajouter les paramètres à l'objet de la requête (je ne sais pas comment cela se fait en C++

Références à d'autres questions.

Wild Wild Web:

1

La requête Sql sous forme de requête paramétrée est sûre par rapport au format de chaîne pour éviter une attaque par injection SQL. Exemple de requête paramétrées

StringBuilder sqlstr = new StringBuilder(); 
cmd.Parameters.AddWithValue("@companyid", CompanyID); 
sqlstr.Append("SELECT evtconfigurationId, companyid, 
    configname, configimage FROM SCEVT_CONFIGURATIONS "); 
sqlstr.Append("WHERE [email protected] "); 

Exemple de format de chaîne de requête

StringBuilder sqlstr = new StringBuilder(); 
sqlstr.Append("SELECT evtconfigurationId, companyid, configname, 
    configimage FROM SCEVT_CONFIGURATIONS "); 
sqlstr.Append("WHERE companyid" + CompanyID); 
+0

+1 pour avoir mentionné l'injection SQL qui est le but principal du paramétrage –

Questions connexes