什么是C ++中的“查询参数”?

时间:2008-11-19 04:41:13

标签: c++ sql db2 stringstream

我们使用stringstream在C ++中准备选择查询。但我们强烈建议使用QUERY PARAMETERS提交db2 sql查询以避免使用stringstream。任何人都可以分享C ++中查询参数的确切含义吗?另外,分享一些实用的示例代码片段。

提前感谢帮助。

编辑:它是字符串流而不是strstream。

谢谢, Mathew Liju

2 个答案:

答案 0 :(得分:3)

我怀疑这通常是指参数化查询,而不是在字符串中构造查询,它们提供sql变量(或参数),然后分别传递这些变量。这些对于处理SQL注入攻击要好得多。举例说明:

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

很糟糕,而这个:

"SELECT * FROM Customers where CustomerId = @CustomerId" 

很好。问题是您必须将参数添加到查询对象(我不知道如何在C ++中完成此操作。

参考其他问题:

Wild Wild Web:

答案 1 :(得分:1)

参数化查询表单中的SQL查询比字符串格式更安全,以避免sql注入攻击。 参数化查询的示例

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

查询字符串格式示例

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