基本上我想要实现的目标如下: -
我有一个带有值的文本框字段,我想根据SQL Server数据库中的值检查此值,如果匹配则执行特定任务。
这是我到目前为止所做的:
SELECT userID, username , password
FROM Users
WHERE (username = textboxUsername.text) AND (password = textboxPassword.text
但它似乎对我不起作用,我想我差不多正确地做到了?
我还会更好地使用数据集或只是一个bog stand sql命令,因为还有其他查询需要执行吗?
非常感谢
答案 0 :(得分:1)
您需要使用文本框中的值创建查询。
您可以使用命名参数执行此操作,例如,以确保正确转义值:
SqlCommand cmd = new SqlCommand();
cmd.CommandText = @"SELECT userID, username , password
FROM Users
WHERE (username = @username) AND (password = @password)";
cmd.Parameters.AddWithValue("@username", textboxUsername.Text);
cmd.Parameters.AddWithValue("@password", textboxPassword.Text);
...
答案 1 :(得分:1)
在mazzucci的答案上稍微扩展一下:
using (var con = new SqlConnection("connection string"))
{
con.Open();
var cmd = new SqlCommand(@"SELECT userID, username, password FROM Users WHERE (username = @username) AND (password = @password)");
cmd.Parameters.AddWithValue("@username", textboxUsername.Text);
cmd.Parameters.AddWithValue("@password", textboxPassword.Text);
if (cmd.ExecuteNonQuery() > 0)
{
//They were the same
}
}
然而,考虑到你所做的一切看起来都很危险。我认为Eric Lippert在SO上发表过一些关于密码和身份验证的危险的帖子。
比如这个: Does salt need to be random to secure a password hash?