Pregunta

Estábamos usando stringstream para preparar consultas seleccionadas en C ++. Pero se nos recomienda utilizar PARÁMETROS DE CONSULTA para enviar consultas sql db2 para evitar el uso de stringstream. ¿Alguien puede compartir qué significa exactamente el parámetro de consulta en C ++? Además, comparta algunos fragmentos de código de muestra prácticos.

Agradezco la ayuda por adelantado.

Editar: es secuencia de cadena y no secuencia de secuencia.

Gracias Mathew Liju

¿Fue útil?

Solución

Sospecho que esto se refiere a consultas parametrizadas en general, en lugar de construir la consulta en una cadena, proporcionan variables sql (o parámetros) y luego pasan esas variables por separado. Estos son mucho mejores para manejar los ataques de inyección SQL. Para ilustrar con un ejemplo:

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

Es malo, mientras que esto:

"SELECT * FROM Customers where CustomerId = @CustomerId" 

es bueno. El problema es que debe agregar los parámetros al objeto de consulta (no sé cómo se hace esto en C ++.

Referencias a otras preguntas:

Wild Wild Web:

Otros consejos

La consulta SQL en forma de consulta parametrizada es segura que el formato de cadena para evitar el ataque de inyección SQL. Ejemplo de consulta parametrizada

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

Ejemplo de formato de cadena de consulta

StringBuilder sqlstr = new StringBuilder();   
sqlstr.Append("SELECT evtconfigurationId, companyid, configname, 
   configimage FROM SCEVT_CONFIGURATIONS ");
sqlstr.Append("WHERE companyid" +  CompanyID);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top