2012-02-16 46 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