登入執行個體對比-C#和VB.NET實現三層

來源:互聯網
上載者:User

標籤:c#   vb.net   三層結構   

             大家在閱讀這篇文章之前可以先閱讀另外一篇博文《三層結構》(請點擊這裡)。對其有最基本的認識。

             在看視頻的過程中,用C#實現了登入的執行個體,之後對其又轉換為了VB.NET。實現功能是一樣的,只是換湯不換藥,換了一種表達方式而已。對比著來學習效果更佳。

             對比一:實體層

     C#實現:

<span style="font-size:18px;">public class UserInfo    {        public int ID { get; set; }        public string UserName { get; set; }        public string Password { get; set; }        public string Email { get; set; }    }</span>
   VB.NET實現:

<span style="font-size:18px;">Public Class UserInfo    Private _ID As Integer    Public Property ID As Integer        Get            Return _ID        End Get        Set(value As Integer)            _ID = value        End Set    End Property    Private _UserName As String    Public Property UserName As String        Get            Return _UserName        End Get        Set(value As String)            _UserName = value        End Set    End Property    Private _Password As String    Public Property Password As String        Get            Return _Password        End Get        Set(value As String)            _Password = value        End Set    End Property    Private _Email As String    Public Property Email As String        Get            Return _Email        End Get        Set(value As String)            _Email = value        End Set    End PropertyEnd Class</span>
    對比分析:都是為了封裝資料,便於資料在三層中流轉,很明顯,C#比VB.NET的代碼簡單很多,但實現的功能卻是相同的。有一個最大的區別非常顯眼,C#每句結尾都有分號,而VB.NET沒有。

                對比二:DAL層

                C#實現:

<span style="font-size:18px;">class DbUtil    {        public static string ConnString = @"Server=qiwei;Database=Login; User ID=sa; Password=130427";            }</span>

<span style="font-size:18px;">public class UserDAO    {        public Login .Model .UserInfo  SelectUser(string userName, string password)        {            using(SqlConnection conn=new SqlConnection (DbUtil.ConnString ))            {                SqlCommand cmd = conn.CreateCommand();                cmd.CommandText = @"SELECT ID,UserName, Password, Email                                    FROM USERS WHERE [email protected] AND [email protected]";                cmd.CommandType = CommandType.Text;                cmd.Parameters.Add (new SqlParameter ("@UserName",userName ));                cmd.Parameters .Add (new SqlParameter ("@Password",password ));                                    conn.Open();                SqlDataReader reader = cmd.ExecuteReader();                Login.Model.UserInfo user = null;                while (reader.Read())                {                    if (user == null)                    {                        user = new Login.Model.UserInfo();                    }                    user.ID =reader.GetInt32(0);                    user.UserName = reader.GetString(1);                    user.Password = reader.GetString(2); //not suggestion                    if (!reader.IsDBNull(3))                    {                        user.Email = reader.GetString(3);                    }                }                return user;            }        }    }</span>
               VB.NET實現:

<span style="font-size:18px;">Public Class UserDAO    Public conn As New SqlConnection("server =localhost;database=Login;user=sa;password=130427")    Dim sql As String = "select ID,UserName,Password,Email from Users where [email protected]"    Public Function SelectUser(ByVal userName As String, ByVal password As String)        Dim cmd As New SqlCommand(sql, conn)        Dim reader As SqlDataReader        Dim user1 As New LoginEntity.UserInfo()        cmd.CommandText = sql        cmd.CommandType = CommandType.Text        cmd.Parameters.Add(New SqlParameter("@UserName", userName))        cmd.Parameters.Add(New SqlParameter("@Password", password))        conn.Open()        reader = cmd.ExecuteReader        While reader.Read()            If user1 Is Nothing Then                user1 = New LoginEntity.UserInfo()            End If            user1.ID = reader.GetInt32(0)            user1.UserName = reader.GetString(1)            user1.Password = reader.GetString(2)            If Not reader.IsDBNull(3) Then                user1.Email =reader .GetString (3)            End If        End While        Return user1    End FunctionEnd Class</span>
             對比分析:都是提供基本的資料訪問,串連資料庫,從資料庫中尋找資料,然後讀資料,將資料傳遞到實體層。

             C#中,先單獨將串連資料類DbUtil放在一個類庫,方便之後各類串連資料庫調用,對今後若更換資料庫提供方便。當然VB.NET同樣可以實現。這裡直接與資料庫進行相連。

             DAL層都需要引用實體層。用到資料庫都需要添加引用,C#實現:

<span style="font-size:18px;">using System.Data;using System.Data.SqlClient;</span>
           VB.NET實現:
<span style="font-size:18px;">Imports System.DataImports System.Data.SqlClient</span>
            如果仔細觀察,C#中只有conn.Open(),開啟資料庫連接,而沒有conn.Open(),關閉資料庫連接。這裡Using(){}函數體的使用是自動關閉的。
         
  對比三:BLL層

            C#實現:

<span style="font-size:18px;">public class LoginManager    {        public Login.Model.UserInfo UserLogin(string userName, string password)        {            Login.DAL.UserDAO uDao = new Login.DAL.UserDAO();            Login.Model.UserInfo user = uDao.SelectUser(userName, password);            if (user != null)  //login successfully            {                Login.DAL.ScoreDAO sDao = new Login.DAL.ScoreDAO();                sDao.UpdateScore(userName, 10);                return user;            }            else            {                throw new Exception("登入失敗!");            }        }    }</span>
          VB.NET實現:

<span style="font-size:18px;">Public Class LoginMagnager    Public Function UserLogin(ByVal userName As String, ByVal password As String)        Dim uDAO As New LoginDAL.UserDAO        Dim user1 As New LoginEntity.UserInfo        user1 = uDAO.SelectUser(userName, password)        If IsNothing(user1.UserName) Then            Throw New Exception("登入失敗")        Else            Return user1        End If    End FunctionEnd Class</span>
            對比分析:這裡用VB.NET實現的時候沒有加入積分的功能。兩種代碼的實現都是為了將DAL層的資料傳遞給實體層,然後進行邏輯判斷。但代碼的表現形式還是不一樣的。
            對比四:UI層

            c#實現:            

<span style="font-size:18px;">private void btnLogin_Click(object sender, EventArgs e)        {            string userName = txtUserName.Text.Trim();            string password = txtPassword.Text;            Login.BLL.LoginManager mgr = new Login.BLL.LoginManager();            Login.Model .UserInfo user=mgr.UserLogin(userName, password);                                MessageBox.Show("登入使用者:" + user.UserName);                          }</span>
         VB.NET實現:      

<span style="font-size:18px;">Private Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.Click        Dim userName As String        Dim password As String        Dim mgr As New loginBLL.LoginMagnager        Dim user As LoginEntity.UserInfo        userName = txtUserName.Text        password = txtPassword.Text        user = mgr.UserLogin(userName, password)        MessageBox.Show("登入成功!使用者名稱:" + userName)    End Sub</span>
             對比分析:都是採集使用者的輸入資訊,然後將BLL層的資料傳遞給實體層。從這裡可以看出最大的不同就是,C#邊定義邊使用,而VB.NET每個出現的資料都必須先定義,然後才能使用。

             總結:

             通過學習這個簡單的登入執行個體,用C#和VB.NET去實現三層。首先,明確掌握了三層結構的應用。其次,又一次感受到了電腦語言的相同性。只有紮實地掌握了一門語言,再學習其它語言那就是照葫蘆畫瓢的事兒了,so easy!



             

             

登入執行個體對比-C#和VB.NET實現三層

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.