iT邦幫忙

2024 iThome 鐵人賽

DAY 18
0
Modern Web

從零開始使用Microsoft MVC架構來搭建web server系列 第 18

DAY 18 登入案例演示_程式碼詳解

  • 分享至 

  • xImage
  •  

在上一篇章當中我們有稍微講解過整個程式邏輯架構,這個篇章當中我們來詳解程式碼得部分

 public ActionResult DoLogin(loginfo info)
  {
  //與資料庫連接
 string connstr = "Data Source=CSIE-TEST2;Initial Catalog=Student_data;UserID=TEST03;Password=1qaz@WSX;Encrypt=False";
 SqlConnection conn = new SqlConnection(connstr);
 conn.Open();
 //下SQL語法
 SqlCommand cmd = new SqlCommand("select * from student_login where account=@Account and  Password=@Password");
 cmd.Connection = conn;
 //填入參數(使用者輸入的帳號密碼)
 cmd.Parameters.AddWithValue("@account", info.Account);
 cmd.Parameters.AddWithValue("@Password", info.Password);
 //執行SQL語法來查詢是否有這組帳密
 SqlDataAdapter adpt = new SqlDataAdapter();
 DataSet ds = new DataSet();
 adpt.SelectCommand = cmd;
 adpt.Fill(ds);
 //如果有就跳轉到首頁
 if (ds.Tables[0].Rows.Count > 0)
 {
     return RedirectToAction("Index");
 }

在下方的資料庫連接當中,連接字串如何獲取(connstr)?
在上次連接的資料庫當中按下屬性
https://ithelp.ithome.com.tw/upload/images/20241001/201683320PF5KGACQB.png
在右邊紅色框框中就是連接字串,裡面包含要與資料庫溝通所需要的資訊,把它複製下來後直接貼到字串當中,但是密碼必須修改成使用者的密碼。
https://ithelp.ithome.com.tw/upload/images/20241001/201683325KrhMcb5ol.png

//與資料庫連接
 string connstr = "Data Source=CSIE-TEST2;Initial  Catalog=Student_data;UserID=TEST03;Password=1qaz@WSX;Encrypt=False";
 SqlConnection conn = new SqlConnection(connstr);

SqlConnection conn = new SqlConnection(connstr);這句語法其實使用的是創建class的物件,其實在.net framwork下有很多class,簡單來說就是使用其他人已經寫好了的功能,我們把它拿來用,(class名稱 物件名稱 =new class名稱(參數)),那這個物件的主要功能是與資料庫連接。

 //下SQL語法
 SqlCommand cmd = new SqlCommand("select * from student_login where account=@Account and  Password=@Password");
 cmd.Connection = conn;

這句語法與上述手法相同,但所需要的參數是sql語法,這裡的語法解釋是找尋帳號密碼=使用者輸入的帳號密碼,但在這邊語法並未執行cmd.Commectiom=conn是此語法是連接哪個資料庫,那就是連接上一段程式碼的conn。

cmd.Parameters.AddWithValue("@account", info.Account);
cmd.Parameters.AddWithValue("@Password", info.Password);

在在語法當中填入參數

 //執行SQL語法來查詢是否有這組帳密
 SqlDataAdapter adpt = new SqlDataAdapter();
 DataSet ds = new DataSet();
 adpt.SelectCommand = cmd;
 adpt.Fill(ds);
 //如果有就跳轉到首頁
 if (ds.Tables[0].Rows.Count > 0)
 {
     return RedirectToAction("Index");
 }

在這段語法當中也是大量使用物件,其中在 adpt.SelectCommand = cmd;adpt.Fill(ds);這當中是把在資料庫搜尋到的結果儲存到容器當中,if判斷式則是判斷容器當中是否是空的,如果不是就代表帳號密碼輸入正確,否則沒有這組帳號密碼。

總結:
這段程式碼當中其實有很多別人已經寫好的功能,但是我們需要學會去使用,在這當中創建一個物件的語法會大量出現例如: DataSet ds = new DataSet();,但不須特別去記,只需要在會使用到的情況下去查詢如何使用就好。


上一篇
DAY 17 登入案例演示_與資料庫互動以及判斷邏輯
下一篇
DAY 19 登入案例演示_總結
系列文
從零開始使用Microsoft MVC架構來搭建web server30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言