首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将变量传递给SQL

将变量传递给SQL
EN

Stack Overflow用户
提问于 2012-03-22 16:46:11
回答 1查看 1.4K关注 0票数 1

我有一个变量,它是IP地址。它将作为文本保存在我的Access 2010数据库中。我尝试使用ipSrc运行此查询,但查询总是失败。我的猜测是它将ipSrc视为ipSrc,而不是实际的IP地址。我用' ipSrc‘试过了,就是普通的ipSrc,两个reurn都失败了。我也尝试了""ipSrc"",同样也失败了。这是失败的。'&ipSrc‘。以下是语句。

代码语言:javascript
复制
SQLCHAR* query = (SQLCHAR*)"SELECT tblIP.[IPAddress], tblIP.[IPType], tblIP.[IPStatus], tblIP.[IPMax] FROM tblIP WHERE tblIP.[IPAddress]= ipSrc AND tblIP.[IPType]=3 AND tblIP.[IPStatus]=1 AND tblIP.[IPMax]=0;"; 

这是ipSrc的定义。

代码语言:javascript
复制
translate_ip(ip_header->source_ip, ipSrc);

使用printf将其打印为实际的IP地址。

代码语言:javascript
复制
printf("\n   Source      IP: %s", ipSrc);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-22 16:58:52

代码没有办法从你所拥有的东西中知道ipSrc应该被特殊对待,它只会按原样传递它。

您可以尝试将查询字符串动态构造为C++字符串,然后使用该字符串填充查询。类似于:

代码语言:javascript
复制
std::string strqry =
      "SELECT  tblIP.[IPAddress], "
    + "        tblIP.[IPType], "
    + "        tblIP.[IPStatus], "
    + "        tblIP.[IPMax] "
    + "FROM    tblIP "
    + "WHERE   tblIP.[IPAddress] = '" + ipSrc + "' "
    + "AND     tblIP.[IPType] = 3 "
    + "AND     tblIP.[IPStatus] = 1 "
    + "AND     tblIP.[IPMax] = 0"
    + ";"; 

SQLCHAR *query = (SQLCHAR *)(strqry.c_str());

// Now use query

并确保您可以控制ipSrc值。否则,您将受到SQL注入攻击(在这种情况下,您将需要使用预准备/参数化语句)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9818875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档