C#表示针对数据库值,sql命令或datadapter数据集的文本框值

时间:2012-02-16 21:23:08

标签: c# sql dataset command

基本上我想要实现的目标如下: -

我有一个带有值的文本框字段,我想根据SQL Server数据库中的值检查此值,如果匹配则执行特定任务。

这是我到目前为止所做的:

SELECT        userID, username , password
FROM           Users
WHERE        (username = textboxUsername.text) AND (password = textboxPassword.text

但它似乎对我不起作用,我想我差不多正确地做到了?

我还会更好地使用数据集或只是一个bog stand sql命令,因为还有其他查询需要执行吗?

非常感谢

2 个答案:

答案 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?