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

发布于 2024-07-09 06:33:38 字数 236 浏览 7 评论 0 原文

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

提前感谢您的帮助。

编辑:它是 stringstream 而不是 strstream。

谢谢, 马修·李居

We were using stringstream to prepare select queries in C++. But we were strongly advised to use QUERY PARAMETERS to submit db2 sql queries to avoid using of stringstream. Can anyone share what exactly meant by query parameter in C++? Also, share some practical sample code snippets.

Appreciate the help in advance.

Edit: It is stringstream and not strstream.

Thanks,
Mathew Liju

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

记忆で 2024-07-16 06:33:38

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

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

很糟糕,而这个:

"SELECT * FROM Customers where CustomerId = @CustomerId" 

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

参考其他问题:

Wild Wild Web:

I suspect this refers to parameterized queries in general, rather than constructing the query in a string, they supply sql variables (or parameters) and then pass those variables separately. These are much better for handling SQL Injection Attacks. To illustrate with an example:

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

Is bad, while this:

"SELECT * FROM Customers where CustomerId = @CustomerId" 

is good. The catch is that you have to add the parameters to the query object (I don't know how this is done in C++.

References to other questions:

Wild Wild Web:

温折酒 2024-07-16 06:33:38

参数化查询形式的sql查询比字符串格式的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);

Sql query in parameterized query form is safe than string format to avoid sql injection attack.
Example of parameterized query

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

Example of query string format

StringBuilder sqlstr = new StringBuilder();   
sqlstr.Append("SELECT evtconfigurationId, companyid, configname, 
   configimage FROM SCEVT_CONFIGURATIONS ");
sqlstr.Append("WHERE companyid" +  CompanyID);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文