(11)C#之ADO.NET 初始三層架構的DAL層


◇三層架構(3-tier architecture) 通常意義上的三層架構就是將整個業務應用划分為:表現層(UI)、業務邏輯層(BLL)、數據訪問層(DAL)。

  區分層次的目的即為了“高內聚低耦合”的思想。在軟件體系架構設計中,分層式結構是最常見,也是最重要的一種結構。                        (以上來自百度百科“三層架構”)

◇我個人的理解是,每一層都實現自己的功能,然后相互調用,最后使得代碼更加方便的管理。

◇例如:我們可以把對數據庫的操作代碼(例如一些select 或者insert語句寫在DAL層的一個方法中,然后在調用它們)。接下來我就來詳細分析這個例子:

 

①前提說明:數據庫中有一張表,有三個字段。然后我們新建一個名為DALWindow的窗口,放上來個Button控件,一個叫做insert,一個叫做selcect,如下圖:

                               

 

②為了方便進行獲取以及賦值,我們需要申請一個定義Person類:

    class Person
    {
        public string Name { get; set; }
        public int? Age { get; set; }
        public int Height { get; set; }
    }

◇注意這個的int?類型,應該與數據庫中的可控字段對應。

 

③然后新建一個名為DAL.cs的類作為數據訪問層:

     一、這里先寫下插入數據的數據訪問層的代碼:

        public static object ToDBValue(object value)
        {
            if (value == null)
            {
                return DBNull.Value;
            }
            else
            {
                return value;
            }
        }



        public static int DALInsert(Person person)
        {         
           int i = SqlHelper.ExecuteNonQuery("Insert into T_Person values (@name,@age,@height)",
                new SqlParameter("@name",ToDBValue(person.Name)),
                new SqlParameter("@age",ToDBValue(person.Age)),
                new SqlParameter("@height",person.Height));
          return i;
        }

◇其中,ToDBValue()方法是用來處理把我們要插入的null類型轉換成數據庫中可識別的NULL類型的

            然后在insert的Click事件中調用這個靜態方法:

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            Person p1 = new Person();
            p1.Height = 1800;
            int i=  DAL.DALInsert(p1);
            MessageBox.Show("成功插入"+i.ToString()+"條數據");
        }

◇大家可以看出,這時候在這個Click事件中,代碼就顯得格外簡單,而且沒有任何關於數據庫的插入語句以及一些ADO.NET對象。直觀明了。

 

    二、然后再來寫查詢數據的數據訪問層的代碼:

     public static object FromDBValue(object value)
        {
            if (value == DBNull.Value)
            {
                return value = null;
            }
            else
            {
                return value;
            }
        }



        public static Person DALSelectByHeight(int height)
        {
            Person person = new Person();
            DataTable dt = SqlHelper.ExecuteDataTable("select * from T_Person where Height = @height",
                new SqlParameter("@height",height));

            if (dt.Rows.Count == 1)
            {
                foreach (DataRow dr in dt.Rows)
                {
                    person.Age = (int?)FromDBValue(dr["Age"]);
                    person.Name = (string)FromDBValue(dr["Name"]);
                    person.Height = (int)FromDBValue(dr["Height"]);
                }
                return person;
            }
            else
            {
               
                person.Name = "000";
                person.Height = 000;
                person.Age = 000;
                return person;
            }

        }

◇FromDBValue方法是用來判斷和獲取數據庫中的NULL類型以轉化成代碼可識別的null類型

    然后就是select按鈕的Click事件:

private void button2_Click(object sender, RoutedEventArgs e)
        {
            
              Person p1 =  DAL.DALSelectByHeight(123);
              MessageBox.Show(p1.Age.ToString());
        }

◇這樣就完成了,查詢和插入數據的DAL分層編寫。

◇在很小的項目中,看似步驟很麻煩,效率很低。但是在大的項目中,這是必須這樣做的,才能准確的修改查看代碼。 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM