我有一个变量,它是IP地址。它将作为文本保存在我的Access 2010数据库中。我尝试使用ipSrc运行此查询,但查询总是失败。我的猜测是它将ipSrc视为ipSrc,而不是实际的IP地址。我用' ipSrc‘试过了,就是普通的ipSrc,两个reurn都失败了。我也尝试了""ipSrc"",同样也失败了。这是失败的。'&ipSrc‘。以下是语句。
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的定义。
translate_ip(ip_header->source_ip, ipSrc);使用printf将其打印为实际的IP地址。
printf("\n Source IP: %s", ipSrc);发布于 2012-03-22 16:58:52
代码没有办法从你所拥有的东西中知道ipSrc应该被特殊对待,它只会按原样传递它。
您可以尝试将查询字符串动态构造为C++字符串,然后使用该字符串填充查询。类似于:
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注入攻击(在这种情况下,您将需要使用预准备/参数化语句)。
https://stackoverflow.com/questions/9818875
复制相似问题