我无法将我的ip-address作为输入传递给mysql中的数据库usnig c#

时间:2011-08-08 12:55:00

标签: c# mysql

我无法使用c#将我的ip地址作为mysql数据库的输入传递给我 我的代码:

string Query = ("SELECT mobile FROM UserDetails where machine_ip=" +ipaddress);

如果是一个如下所示的字符串,它可以正常工作:“1234567890” 但如果看起来像这样:“127.0.0.0”

8 个答案:

答案 0 :(得分:4)

试试这个:

"SELECT mobile FROM UserDetails where machine_ip = '" + ipaddress + "'"

此外,如果这是面向最终用户的代码,您应该考虑使用参数化查询来避免SQL注入漏洞。

答案 1 :(得分:3)

你不需要在SQL字符串中将字符串放入引号中......或者更好的是,使用参数化查询(这样你就可以帮助自己抵御SQL注入攻击)

答案 2 :(得分:1)

在不知道数据库构成的情况下,machine_ip可能不是VARCHAR。这就是数字有效的原因,但是带有“ASCII”的IP地址没有。

答案 3 :(得分:1)

将其添加到Apostrophes

string Query = ("SELECT mobile FROM UserDetails where machine_ip='" +ipaddress+ "'");

答案 4 :(得分:1)

好像你应该用ipaddress包围' 像这样:

"SELECT mobile FROM UserDetails where machine_ip='" + ipaddress + "'"

答案 5 :(得分:1)

如果在数据库中存储没有像127001这样的点的IP地址,你应该从输入字符串IP中删除点

string res = inputId.Replace(".","");

并且不要在SQL语句中使用字符串连接使用参数化查询

答案 6 :(得分:1)

127.0.0.0无法隐式转换为字符串,因此您必须像这样调用它:

("SELECT mobile FROM UserDetails where machine_ip='" + ipaddress + "'");

哦,请注意SQL injections

答案 7 :(得分:1)

有两种方法可以在数据库中存储IP地址,正确的方式和错误的方式。

正确的方法是将IP地址转换为10的整数 - 127.0.0.1转为2130706433,192.168.10.10转为3232238090。

错误的方法是将值中的句点存储为字符串。

如果存储IP的人使用正确的方式,那么您只需要在查询中的INET_ATON调用中包装您的IP地址,如下所示:

SELECT mobile FROM UserDetails where machine_ip=INET_ATON('127.0.0.1');

如果表格中的IP地址存储为字符串,您只需要将您的地址用单引号括起来,一切都应该正常工作(虽然效率较低)。

SELECT mobile FROM UserDetails where machine_ip='127.0.0.1';