2012-02-16 42 views
0

基本上文本框的值我想要实现的是以下几点: -C#形成对数据库值,SQL命令或datadapter数据集

我有一个文本框字段的值,我要核对这个值SQL Server数据库中的值如果匹配,则执行特定的任务。

这是我到目前为止有:

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

但它似乎没有对我的工作,我想我几乎做是否正确?

此外,我会过得更好使用的数据集或只是一个沼泽站在SQL命令一样会有其他的查询进行?

非常感谢

回答

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?

+0

可以这样也可以使用数据适配器做呢? – mjsey 2012-02-16 22:30:34

+0

我也似乎得到的返回值-1,无论比赛与否?我不应该使用.ExecuteScalar()方法吗? – mjsey 2012-02-16 23:46:50

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

我想这个使用SqlCommand的控制从工具框,但仍然有问题 – mjsey 2012-02-16 23:00:35