无法创建SQL连接字符串

时间:2016-10-27 01:31:09

标签: c# sql-server

我有一个使用sql运行的登录页面示例,我试图将其自定义到我的服务器。

我遇到了sql string的问题。

这是原始的(带有我的表格信息)。这似乎是使用@user和@password从登录控件中提取用户名和密码;我认为。如果不是它在做什么?什么是@user和@password?

string sql = "select count(*) from ResidentUserDatabase where users = @user and passwords = @password";

这是我硬编码用户名和密码的地方。这有效,我能够登录就好了。 Obvioulsy不可用,但确认我连接到数据库并提取用户信息

string sql = "select count(*) from ResidentUserDatabase where users = 'user' and passwords = 'pass'";

现在,这里是我遇到问题的地方(因为第一个版本不起作用......)。我试图绕过@user和@password,显然做得不对。

string sql = "select count(*) from ResidentUserDatabase where users = '" + LoginControl.UserName.ToString() + "' and passwords = '" + LoginControl.UserName.ToString() + "'";

我不确定从哪里开始,或者为什么这个例子不起作用。

感谢

2 个答案:

答案 0 :(得分:3)

@user@password是“参数化sql查询”的参数。您在第3代码示例中创建的内容是一个真正的安全问题。谷歌称“Sql Injection攻击”。如果您不熟悉这种安全问题,那么我强烈建议您不要为您的应用程序构建登录表单。 “这里是龙”

答案 1 :(得分:2)

你在这里遇到了一些不好的事情。

首先,您不应该连接字符串,因为这会让您对SQL注入开放。谷歌,你会明白为什么。

其次,@ user和@password标记是SQL查询的参数。您要做的是将参数添加到用于执行SQL的任何对象(例如SqlCommand)。如何详细地做到这一点超出了问题的范围。

第三,您的字符串连接查询使用相同字段作为用户名和密码。这就是为什么它不起作用。