Domanda

Stavamo usando stringstream per preparare query selezionate in C ++. Ma ci è stato fortemente consigliato di usare QUERY PARAMETERS per inviare query db2 sql per evitare l'uso di stringstream. Qualcuno può condividere cosa si intende esattamente per parametro di query in C ++? Inoltre, condividi alcuni snippet di codice di esempio pratici.

Apprezzo in anticipo l'aiuto.

Modifica: è stringstream e non strstream.

Grazie, Mathew Liju

È stato utile?

Soluzione

Sospetto che questo si riferisca a query con parametri in generale, piuttosto che costruire la query in una stringa, forniscono variabili sql (o parametri) e quindi passano queste variabili separatamente. Questi sono molto meglio per la gestione degli attacchi SQL Injection. Per illustrare con un esempio:

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

È male, mentre questo:

"SELECT * FROM Customers where CustomerId = @CustomerId" 

è buono. Il problema è che devi aggiungere i parametri all'oggetto query (non so come sia fatto in C ++.

Riferimenti ad altre domande:

Wild Wild Web:

Altri suggerimenti

La query SQL nel modulo di query con parametri è sicura rispetto al formato stringa per evitare attacchi di iniezione sql. Esempio di query con parametri

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

Esempio di formato della stringa di query

StringBuilder sqlstr = new StringBuilder();   
sqlstr.Append("SELECT evtconfigurationId, companyid, configname, 
   configimage FROM SCEVT_CONFIGURATIONS ");
sqlstr.Append("WHERE companyid" +  CompanyID);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top