2013-03-24 70 views
2

我正在嘗試創建一個允許用戶使用.sdf登錄的應用程序,因此互聯網上沒有太多關於此的內容!登錄頁面C#.SDF

真的可以做一些指針。

這是我目前擁有的,但我相信這是一堆亂七八糟的事情,不管我在每個文本框中輸入什麼東西,它都會將我重定向到Form2(這是有點期待的)。我知道我需要一個if語句的地方,但不知道如何實現:

private void Login_Click(object sender, EventArgs e) 
    { 
    using (SqlCeConnection yourConnection = new SqlCeConnection("Data Source=C:\\Users\\Username\\Documents\\Databases\\New Folder\\Login.sdf")) 
    { 
      string query = "SELECT * FROM tbl_employees where Username like '" + textBox1.Text + "' AND Password like '" + textBox2.Text +"'"; 
      SqlCeDataAdapter dA = new SqlCeDataAdapter(query, yourConnection); 
      SqlCeCommandBuilder cBuilder = new SqlCeCommandBuilder(dA); 

      this.Hide(); 
      Form2 secondForm = new Form2(); 
      secondForm.ShowDialog(); 
    } 
}  
+2

對於程序的用戶着想,請讓自己熟悉的密碼哈希和醃製。至少可以說,像你似乎正在做的明文存儲密碼是「不是一個好主意」。一個起點可能是:http://stackoverflow.com/a/401684/1336590 (不僅適用於php) – Corak 2013-03-24 22:20:45

+0

而當你正在學習新的東西:閱讀**參數化查詢**而不是並置一起你的SQL語句。這樣做會打開你的SQL注入攻擊**,使用參數化查詢可以輕鬆避免它。 – 2013-03-25 05:41:23

回答

1

首先,SQL Server CE數據庫即.sdf文件只是一個存儲文件。它是非常非常輕便的SQL Server版本。

但是,至多,您的代碼和邏輯將與SQL Server類似。只是不同的課程。即SqlCeConnection,SqlCeCommand等等。

現在您需要確認您的connectionString是正確的。現在

string connectionString ="data source=physical path to .sdf file; 
         password=pwdThtUSet; persist security info=True"; 

using (SqlCeConnection yourConnection = new SqlCeConnection(connectionString)) 
{ 
     ....your logic 
} 

,在查詢搜索的用戶名和密碼組合匹配行,不like因爲你需要精確匹配做到這一點。

這樣做喜歡:

 string query = "SELECT * FROM tbl_employees where Username ='" + textBox1.Text + "' AND Password ='" + textBox2.Text +"'"; 
     SqlCeDataAdapter dA = new SqlCeDataAdapter(query, yourConnection); 
     DataTable dt = new DataTable(); 
     dA.Fill(dt); 

     if(dt.Rows.Count>0) 
     { 
      this.Hide(); 
      Form2 secondForm = new Form2(); 
      secondForm.ShowDialog(); 
     } 
+0

感謝您的幫助!我設法讓代碼工作,並且能夠使用查詢進行登錄。我希望有一個條件,如果某個用戶名和密碼,如(測試,測試),輸入它會重定向到一個不同的頁面,說form3而不是form2,我知道這需要一個if語句有點你會能夠提供任何幫助?我也一直在閱讀參數化查詢,我將如何能夠將上述內容轉換爲該參數?任何幫助,將不勝感激! – Gagan 2013-03-25 14:39:41

0

試試這個只有在登錄條件已滿足:

if (usernametextbox.Text.Equals("form2username", StringComparison.InvariantCultureIgnoreCase)) { 
    // code for redirection to form2 
    Hide(); 
    con.Close(); 
} else { 
    if (usernametextbox.Text.Equals("form3username", StringComparison.InvariantCultureIgnoreCase)) { 
    // code for redirection to form3 
    Hide(); 
    con.Close(); 
    } 
}