2014-04-07 15 views
-2

我正在嘗試寫入登錄表單。我是編程初學者。請幫我完成。我不知道該怎麼寫。如何編寫登錄表單?請檢查並幫助我

private void btnLogin_Click(object sender, EventArgs e) 
    { 
     string username = txtbUsername.Text; 
     string password = txtbPassword.Text; 

     SqlConnection connect = new SqlConnection("Data Source=NLA-HP;Initial Catalog=GTBDB;Persist Security Info=False;User ID=sa;Password=dbadmin"); 

     string query = "select * from login where username='" + username + "' and password='" + password + "' "; 

     connect.Open(); 

     SqlCommand command = new SqlCommand(query,connect); 
     SqlDataReader dr = command.ExecuteReader(); 
+2

您應該始終使用參數化查詢。 http://msdn.microsoft.com/en-us/magazine/cc163917.aspx –

+3

SQL注入警報! –

+3

從邏輯上思考一下。因此,如果輸入的詳細信息與數據庫中的內容相匹配,那麼'SELECT'語句將返回用戶。如果他們混淆了用戶名或密碼,那麼'SELECT'語句將不會返回任何內容。所以你有一個條件。你有一個'IF'條件來寫。 – Arran

回答

2
if (textBox1.Text != "" & textBox2.Text != "") 
    { 
     string queryText = "SELECT Count(*) FROM Table1 " + 
          "WHERE username = @Username AND password = @Password"; 
     using(SqlConnection cn = new SqlConnection("your_connection_string")) 
     using(SqlCommand cmd = new SqlCommand(queryText, cn)) 
     { 
      cn.Open(); 
      cmd.Parameters.AddWithValue("@Username", textBox1.Text); // cmd is SqlCommand 
      cmd.Parameters.AddWithValue("@Password", textBox2.Text); 
      int result = (int)cmd.ExecuteScalar(); 
      if (result > 0) 
       MessageBox.Show("Loggen In!"); 
      else 
       MessageBox.Show("User Not Found!"); 
     } 
    } 

在下面的一行代碼我們正在檢查這兩個用戶名和密碼文本框不能爲空。

如果(textBox1.Text!=「」 & textBox2.Text!=「」)

在我們選擇它同時匹配表返回行的數量這部分代碼

用戶名和密碼條件。

string queryText =「SELECT Count(*)FROM Table1」+ 「WHERE username = @Username AND password = @Password」;

通常它應該返回1作爲結果。如果它返回更多的那個,你應該改變表格屬性。

當你有一個單一的輸出值,不能被定義爲一個參數 - 使用ExecuteScalar

+0

對「教程問題」的回答應該包含一個解釋,否則它沒有幫助。 –

+0

@TimSchmelter我已經更新了我的答案..! –