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命令,因为还会执行其他查询?
非常感谢
扩展一下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);
...