none
C#的帳號密碼驗證的寫法 RRS feed

  • 問題

  • 我有兩個表單form1跟form2跟一個SQL資料庫mydata.mdf(只有一個表單有兩個欄位一個帳號一個密碼)。
    form2有兩個textbox,一個做新增帳號一個做新增密碼然後再加入一個button,我把新增密碼連結到資料表的帳號,新增密碼連結到資料表的帳號,當我按下BUTTON就會新增一組帳密。

    當我執行此程式時會先執行form2的formload呼叫form1來進行驗證帳密,form1一樣有兩個textbox跟一個BUTTON分別要輸入帳號跟密碼當我按下按鈕就會進行驗證帳密是否正確,如果正確就會進入form2可以新增帳密。

    問題一:在form2要做binding source到mydata.mdf而form2的兩個欄位要連繫到資料表的兩個欄位,那form1要做這些動作嗎??

    問題二:當我按下form1的BUTTON要驗證form1所輸入的帳號跟密碼是否跟資料庫的一樣,這邊要怎麼寫??
    2012年9月4日 上午 04:48

解答

  • 問題一、如果你驗證帳號密碼的動作寫在form1,那麼就必須在form1上連接資料庫,並比對textbox中輸入的帳密是否與資料庫中的相符。

    問題二、你可以利用 ADO.NET 所提供的類別像是 DataAdapter 或是 DataReader 來讀取資料庫中所儲存的密碼,再來和使用者輸入的進行比對。

    http://msdn.microsoft.com/zh-tw/library/ms254931.aspx


    以上說明若有錯誤請指教,謝謝。
    我的BLOG

    2012年9月4日 上午 05:09
  • >>1."如果你驗證帳號密碼的動作寫在form1,那麼就必須在form1上連接資料庫,並比對textbox中輸入的帳密是否與資料庫中的相符",這邊提到要連結資料庫這邊我懂那textbox也要連繫到表單的對應欄位嗎?

    不需要綁定數據庫,只需要使用SqlCommand+SqlDataReader獲取內容判定是否存在即可。

    >>你可以利用 ADO.NET 所提供的類別像是 DataAdapter 或是 DataReader 來讀取資料庫中所儲存的密碼,再來和使用者輸入的進行比對",這邊的觀念我懂問題是出在我沒有頭緒要怎麼寫,可否請大大寫一段給我參考?

    可以,大致內容如下:

    using(SqlCommand cmd = new SqlCommand("select count(*) from xxx where username=@username and password=@password",new SqlConnection("Your conn str")))
    {
       cmd.Connection.Open();
       cmd.Paramters.AddWithValue("@username",ur username);
       cmd.Paramters.AddWithValue("@password",ur password);
       int i =(int)cmd.ExecuteScalar();
       if(i>0)
        {
            //Here begins ur MainForm
        }
       else
        {
             //Register for the new one
        }
    }

    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年9月4日 上午 06:51
  • 您好,
    以下有讀取資料的相關資訊,請參考,謝謝!
    Retrieving Data Using a C# .NET DataReader

    以下有加解密的相關資訊,請參考,謝謝!

    Simple encrypting and decrypting data in C#

    以下是簡單的登入Form,請參考,謝謝!

    How to create winform login dialog and keep looping


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/


    2012年9月4日 上午 06:55
  • 1. 不用, 這部分您應該是要讓使用者輸入帳號/密碼,然後拿去比對,然後記得應該是要先執行Form1後,驗證成功才開Form2.

    2. 用ADO.NET去判斷輸入欄位跟資料庫, 記得欄位加解密處理, 詳細的內容應該都在上面幾位大大的回覆內容中


    LOLOTA - http://www.dotblogs.com.tw/lolota/

    2012年9月4日 上午 08:19
    版主

所有回覆

  • 問題一、如果你驗證帳號密碼的動作寫在form1,那麼就必須在form1上連接資料庫,並比對textbox中輸入的帳密是否與資料庫中的相符。

    問題二、你可以利用 ADO.NET 所提供的類別像是 DataAdapter 或是 DataReader 來讀取資料庫中所儲存的密碼,再來和使用者輸入的進行比對。

    http://msdn.microsoft.com/zh-tw/library/ms254931.aspx


    以上說明若有錯誤請指教,謝謝。
    我的BLOG

    2012年9月4日 上午 05:09
  • 1."如果你驗證帳號密碼的動作寫在form1,那麼就必須在form1上連接資料庫,並比對textbox中輸入的帳密是否與資料庫中的相符",這邊提到要連結資料庫這邊我懂那textbox也要連繫到表單的對應欄位嗎?

    2."你可以利用 ADO.NET 所提供的類別像是 DataAdapter 或是 DataReader 來讀取資料庫中所儲存的密碼,再來和使用者輸入的進行比對",這邊的觀念我懂問題是出在我沒有頭緒要怎麼寫,可否請大大寫一段給我參考

    2012年9月4日 上午 05:36
  • >>1."如果你驗證帳號密碼的動作寫在form1,那麼就必須在form1上連接資料庫,並比對textbox中輸入的帳密是否與資料庫中的相符",這邊提到要連結資料庫這邊我懂那textbox也要連繫到表單的對應欄位嗎?

    不需要綁定數據庫,只需要使用SqlCommand+SqlDataReader獲取內容判定是否存在即可。

    >>你可以利用 ADO.NET 所提供的類別像是 DataAdapter 或是 DataReader 來讀取資料庫中所儲存的密碼,再來和使用者輸入的進行比對",這邊的觀念我懂問題是出在我沒有頭緒要怎麼寫,可否請大大寫一段給我參考?

    可以,大致內容如下:

    using(SqlCommand cmd = new SqlCommand("select count(*) from xxx where username=@username and password=@password",new SqlConnection("Your conn str")))
    {
       cmd.Connection.Open();
       cmd.Paramters.AddWithValue("@username",ur username);
       cmd.Paramters.AddWithValue("@password",ur password);
       int i =(int)cmd.ExecuteScalar();
       if(i>0)
        {
            //Here begins ur MainForm
        }
       else
        {
             //Register for the new one
        }
    }

    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年9月4日 上午 06:51
  • 您好,
    以下有讀取資料的相關資訊,請參考,謝謝!
    Retrieving Data Using a C# .NET DataReader

    以下有加解密的相關資訊,請參考,謝謝!

    Simple encrypting and decrypting data in C#

    以下是簡單的登入Form,請參考,謝謝!

    How to create winform login dialog and keep looping


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/


    2012年9月4日 上午 06:55
  • 1. 不用, 這部分您應該是要讓使用者輸入帳號/密碼,然後拿去比對,然後記得應該是要先執行Form1後,驗證成功才開Form2.

    2. 用ADO.NET去判斷輸入欄位跟資料庫, 記得欄位加解密處理, 詳細的內容應該都在上面幾位大大的回覆內容中


    LOLOTA - http://www.dotblogs.com.tw/lolota/

    2012年9月4日 上午 08:19
    版主