LINQ 與資料存取 (1) -從 ADO.NET 開始

資料存取一直是商業應用程式最重要的技術環節,相關技術於.NET平台已經相當成熟,而其中的關鍵莫過於 LINQ 這項簡單卻威力強大的資料搜尋技巧,而這一系列文章,快速的從最基本的ADO.NET開始,逐步探討LINQ導入之後,相關技術的應用,包含實體類別設計、Entity Framework等等,最後以 ASP.NET MVC 環境下的操作結束,而為了完整性,開始的第一篇複習一下最簡單的 DataSet ,並檢視相關的資料表。

DataSet 是 ADO.NET 最重要的物件之一,負責封裝資料內容,避免應用程式與底層資料庫的直接連線,提供資料操作的最佳彈性。DataSet 被大量運用在 .NET 平台的資料庫應用程式開發,它幾乎是ADO.NET 客戶端資料處理功能的核心,當資料被快取至DataSet物件,剩下的工作則交由 DataSet 物件來執行,應用程式能夠直接在記憶體處理資料內容,而不需要與後端資料庫進行連接,進一步降低網路交通流量。

假設有一個 SQL Server 資料庫 KTMS ,其中的資料表儲存管理一般的商品交易處理資料,先以簡單的分類資料表 Categories 為例,內容如下:


以下是一個簡單的主控台範例,透過DataSet取得 KTMS 資料庫中的 Categories 資料表內容。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;
namespace LINQ_DATA_Day1
{
    class Program
    {
        static void Main(string[] args)
        {
            SqlConnection conn = new SqlConnection(
                            @"Server=Tim-PC;
DataBase = KTMS ;
Trusted_Connection=True ; ");
            string sql = "SELECT * FROM Categories";
            DataSet ds = new DataSet();
            using (conn)
            {
                SqlDataAdapter adapter = new SqlDataAdapter(sql, conn);
                adapter.Fill(ds, "Categories");
            }
            foreach (DataRow row in ds.Tables[0].Rows)
            {
                Console.WriteLine(row[0].ToString() + "" + row[1]);
            }
            Console.ReadKey();
        }
    }
}

首先是一段典型的 ADO.NET 程式,從連線的建立, SQL 語法到建立 DataSet 封裝回傳的資料內容等等,最後逐一取出第一個以及第二個欄位的內容顯示在畫面上。以下為執行結果:

101001PC 組裝元件大類(A
101002PC 週邊設備(B
101003PC 延伸裝置(C

相較於傳統的資料存取技術, DataSet在資料庫的存取操作上提供了更具彈性、更有效率的作法,不過 DataSet 就如同一般的集合物件,想要進一步針對 DataSet 資料執行搜尋運算並不容易,而現在結合 LINQ 技術,開發人員能夠以比較優雅的方式處理相關的問題。




沒有留言: