C#根据数据库值、sql命令或datadapter数据集形成Textbox值

本文关键字:数据集 datadapter Textbox sql 数据库 命令 | 更新日期: 2023-09-27 18:24:49

基本上我想要实现的是:-

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

这就是我目前所拥有的:

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

但这似乎对我不起作用,我想我几乎做对了?

此外,我最好使用数据集还是只使用沼泽地sql命令,因为还会执行其他查询?

非常感谢

C#根据数据库值、sql命令或datadapter数据集形成Textbox值

扩展一下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上发布了很多关于密码和身份验证的危险性的帖子。

比如这个:salt是否需要是随机的才能确保密码哈希的安全?

您需要使用文本框中的值创建查询。

例如,您可以使用命名参数来确保正确转义值:

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);
...