2016-11-04 92 views
0

我創建了一個使用本地SQL Server數據庫作爲數據源的Visual Studio項目,該項目已啓動並正常運行。Visual Studio登錄頁面與本地SQL Server數據庫

我需要爲該項目創建一個登錄表單。

表單有一個用戶名文本框和一個密碼文本框,用戶將用它們的詳細信息填充,然後點擊需要執行select sql語句的'login'按鈕。

有關如何做到這一點的任何參考?

我試過的代碼如下。 它在引用「SqlDataReader dr = cmd.ExecuteReader();」的行處拋出NullReferenceException,

如何解決nullreferenceexception?

謝謝!

private void button1_Click(object sender, EventArgs e) 
     { 
      try 
      { 
       SqlConnection con = new SqlConnection(); 
       con.ConnectionString = "Data Source=MARKO-PC\\SQLEXPRESS;Initial  Catalog=IS2B_G8_FundMeDB;Integrated Security=True"; 
       con.Open(); 

       String sql = "Select * from APPLICANT where  applicant_ID_passport [email protected] AND password = @password"; 
       SqlCommand cmd = new SqlCommand(sql, con); 
       cmd.Parameters.Add(new SqlParameter("@user", txtUserName.Text)); 
       cmd.Parameters.Add(new SqlParameter("@password",  txtPassword.Text)); 
       SqlDataReader dr = cmd.ExecuteReader(); 
       if (dr.HasRows == true) 
       { 
        MessageBox.Show("Login Successful"); 
       } 
       else 
       { 
        MessageBox.Show("Login Failed"); 
       } 
      } 
      catch (SqlException sqle) 
      { 
       MessageBox.Show("Sql Exception"); 

      } 


     } 
+0

類似的問題/解決方案[這裏](http://stackoverflow.com/questions/40347457/what-is-wrong-with-my-c-sharp-login-code/ 40348686#40348686)。 – IMCI

回答

0

您需要對使用ADO.Net,特別是SQLCommand類進行一些研究。

但是,我不會使用上面的內聯SQL語句,因爲這會打開SQL注入。而是使用參數化查詢,存儲過程或LINQ to SQL。

+0

你絕對應該做克里斯托弗上面所說的。但是,我建議從申請人中選擇一個計數,如果它大於0,那麼它們就存在。 –

+0

非常感謝!我正在使用迄今爲止完成的代碼編輯問題。我現在有另一個問題,我會用這個問題來更新這個問題。 –

+0

你解決了這個問題嗎?我不確定你得到的空引用,我從來沒有使用執行閱讀器進行數據檢索。我一直使用com.ExecuteNonQuery()來插入,更新和刪除數據,並且如果查詢返回單個值,則用於檢索我使用executeScalar的數據。如果您正在檢索數據集,我寧願使用SqlDataAdapter和一個數據表來獲取數據。 – ThatChris

1

試試這個

string struser = txtUserName.Text; 
string strpwd = txtPassword.Text; 

String sql = "Select * from APPLICANT where applicant_ID_passport=" + struser + " AND password = " + strpwd +""; 
      SqlCommand cmd = new SqlCommand(sql, con); 
      SqlDataReader dr = cmd.ExecuteReader(); 
相關問題