2012-12-24 98 views
1

我想在c#中使用訪問數據庫創建登錄系統。 我有一個數據庫,和User_ID和密碼列,我不知道爲什麼它不工作,你能幫我一下你的意見嗎? 問題是程序僅檢查第一個用戶,但是當輸入第三或第四個用戶時,它顯示消息:即使user_ID和密碼正確,您的用戶名或密碼也不正確。 這裏是代碼:在訪問數據庫的c#中登錄系統

private void button1_Click(object sender, EventArgs e) 
    { 
     OleDbConnection connect = new OleDbConnection(); 
     connect.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Documents and Settings\Hodzic\Desktop\projekat shipping\Database files\Users.accdb"; 
     connect.Open(); 


     OleDbCommand command = new OleDbCommand(); 
     command.Connection = connect; 
     command.CommandText = "select User_ID, Password from user_details"; 
     OleDbDataReader reader = command.ExecuteReader(); 
     while (reader.Read()) 
     { 

       if (textBox1.Text == reader[0].ToString() && textBox2.Text == reader[1].ToString()) 
       { 


        this.Hide(); 
        Glavna2 g1 = new Glavna2(); 
        g1.Show(); 
        break; 

       } 

       else 
       { 
        MessageBox.Show("Your user ID or password is incorrect."); 
        this.Hide(); 
        Sign_in g2 = new Sign_in(); 
        g2.Show(); 
        break; 
       } 


     } 

     connect.Close(); 
    } 

謝謝。

+1

不要以純文本形式存儲密碼。 – SLaks

回答

1

您需要添加一個WHERE子句在這裏:

command.CommandText = "select User_ID, Password from user_details"; 

目前你只是檢查讀者的第一個結果,所以如果你打算這樣做(這是罰款),您需要一個WHERE子句。

喜歡的東西:

command.CommandText = "select User_ID, Password from user_details WHERE User_ID = 'myusername'"; 

顯然,你需要連接的是,許多人可能會認爲你需要擔心SQL注入(使這將意味着一個準備好的聲明),但是讓我們從那裏開始,然後我們可以繼續前進。

此外,正如SLaks所述,您不想以純文本形式存儲密碼。因此,您的應用程序需要進行相當多的調整,但獲取數據將是一個開始。

下一個研究:在Microsoft Access

  • 準備語句。
  • 密碼哈希。
+0

我明白你告訴我的,但我不知道該怎麼做,因爲我是新手。我的問題是,我的編程教授根本不知道任何事情,他給了我一個項目,使用ms訪問數據庫的ebay之類的東西,因爲我們沒有學習SQL,我只是在衝浪互聯網,試圖找到一些解決方案和90%的時間在編碼,我正在修復代碼。如果我要求他幫助我,他說我不能,你自己做。 (他不知道對方)對垃圾郵件抱歉。感謝您的幫助。 –

+1

@VlasicVilaPanda,就像我所說的那樣,修改您先得到的查詢並獲取數據。這是第一步。然後開始Google搜索。 –