ASP.NET 鏈接sql數據庫的 「登錄/註冊」界面

資源在這裏 :github源文件參考

先看一下截圖


支持的功能:

  • 登錄成功的提示
  • 登錄失敗的提示
    • 賬號或者密碼錯了分開提示
  • 註冊成功的提示
  • 不能註冊已經在數據庫裏面的用戶ID

我在這裏看了很多這個人的教程:walking橙子 ,但是裏面有的東西我不能用,messagebox.show() 就不行。我也不是很懂(搜索也沒有搜到,不知道怎麼使用messagebox的我只能找一種替換的彈窗方式(當然也是來自百度)使用起來也很簡單,關鍵是能用。

推薦大家去看一下,我這裏不打算寫重複的東西,在源文件裏面我有很多的註釋,相信可以方便下載了源文件的人理解一點。


具體步驟

1.用SSMS建立一個數據庫,大概這樣

2.做好一個網頁,大概和頭圖那個類似就行了(看着比較經典但是外觀這裏不是重點)

3.拖一個下面這個控件,並且鏈接好數據庫文件/服務器。(這個也許比較困難,但是這個網上有很多的教程,還有各種問題的處理方法)

4.開始打關於那兩個按鈕的代碼

登錄按鈕:

先打一個SqlCommand之類的,會劃錯誤提示,使用vs的自動補齊功能,它可以幫助你補上using的東西

  • 確認用戶沒有空着框子
  • 和數據庫做對比
    • sqlconnection.open()  這裏的鏈接字符串可以在這邊找到(看圖 ↓)

    • sqlcommand.excute() (並傳遞給reader)注意new sqlcommand()裏面的參數

    • reader.read()

    • 判斷reader.hasrows 來看看是否有這一個用戶和密碼是否正確。並且彈窗

    • 關於用戶輸錯了什麼的判斷(個人感覺這個很重要)並且彈窗

 protected void Button1_Click(object sender, EventArgs e)
    {
        if (TextBox1.Text == "")
        {
            Response.Write("<script>window.alert('沒有輸入用戶名');</script>");
            return;
        }
          
        else if(TextBox2.Text == "")
        {
            Response.Write("<script>window.alert('沒有輸入密碼');</script>");
            return;
        }
             
        SqlConnection conn = new SqlConnection("Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=login_webhw;Integrated Security=True");
        // 這句話從sqldatasource控件裏面複製一個出來。
        conn.Open();

        SqlCommand cmd = new SqlCommand("SELECT *FROM logindb where userID = '" + TextBox1.Text.Trim() + "' and userPWD = '" + TextBox2.Text.Trim() + "'",conn);
        // 這句話創建一個指令
        SqlDataReader sdr = cmd.ExecuteReader();//指令傳給reader
        Label1.Text=cmd.CommandText.ToString();//查看一下自己的查詢語句對不對,一會註釋掉
        // 這句執行它
        sdr.Read();
        if (sdr.HasRows)
            Response.Write("<script>window.alert('登錄成功');</script>");
        else//最討厭的就是一個網頁告訴我用戶名或者密碼錯誤,但是不告訴我到底是哪個
        {
            sdr.Close();//這裏本來不知道要寫的,但是下面再次調用出現了小問題,就加上。最好用完就關掉
            cmd.CommandText = "SELECT *FROM logindb where userID = '" + TextBox1.Text.Trim() +"'";
            sdr = cmd.ExecuteReader();//指令傳給reader
            if (sdr.HasRows)
                Response.Write("<script>window.alert('密碼錯誤');</script>");
            else
                 Response.Write("<script>window.alert('用戶名不存在');</script>");
            sdr.Close();
        }
           
        conn.Close();
    }

註冊按鈕:

  • 主要的區別就在於使用的是插入的sql語句
  • trim()函數是照着上一個帖子的寫的,感覺用處不大。

我在裏面放了一個淺色的label用來看看自己的語句有沒有錯誤,因爲一堆的引號還有加號真的很花眼。

 protected void Button2_Click(object sender, EventArgs e)//註冊按鈕
    {
        if (TextBox1.Text == "")
        {
            Response.Write("<script>window.alert('沒有輸入用戶名');</script>");
            return;
        }

        else if (TextBox2.Text == "")
        {
            Response.Write("<script>window.alert('沒有輸入密碼');</script>");
            return;
        }
        SqlConnection conn = new SqlConnection("Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=login_webhw;Integrated Security=True");
        conn.Open();
        //先檢查有沒有已經存在了,這個用戶
        SqlCommand cmd = new SqlCommand("SELECT *FROM logindb where userID = '" + TextBox1.Text.Trim() + "'", conn);
        SqlDataReader sdr = cmd.ExecuteReader();
        Label1.Text = cmd.CommandText.ToString();//查看一下自己的查詢語句對不對,一會註釋掉
        sdr.Read();
        if (sdr.HasRows)
            Response.Write("<script>window.alert('用戶名已經存在,不可以重複註冊');</script>");
        else//開始寫註冊的東東
        {
            sdr.Close();
            cmd.CommandText = "insert into logindb (userID,userPWD) values ('"+TextBox1.Text+"','"+TextBox2.Text+"')";
            string rows_effedted = cmd.ExecuteNonQuery().ToString();
            Label1.Text = rows_effedted;
            conn.Close();
            conn.Dispose();//釋放conn所有的資源。
            Response.Write("<script>window.alert('註冊成功,可以登錄了');</script>");
        }

    }

 

這樣就寫完了,我還是喜歡玩css的東西,很酷誒!

但是學校叫我做註冊和登錄,重點在於鏈接數據庫。

謝謝你的閱讀。


資源在這裏 :github源文件參考

我的個blog : https://kasusa.github.io 可以去博客裏和我email聯繫。樂於回答相關的小疑問。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章