我有一个IP地址变量。它在Access 2010数据库中保存为文本。我试图用ipSrc运行此查询,查询始终失败。我的猜测是它将ipSrc视为ipSrc而不是实际的IP地址。我尝试使用'ipSrc'并且只是简单的ipSrc,并且两次重新启动都失败了。还试过“”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);
答案 0 :(得分:4)
代码无法从你所拥有的内容中知道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注入攻击(在这种情况下,您将需要使用准备/参数化语句)。