240 likes | 379 Views
視窗程式設計. Class 6 教師:黃聖方. 第十章. ADO .NET 與資料工具. 10-1 本章概述. C# .NET 在資料庫程式設計方面,是使用 ADO.NET 做為存取資料庫的介面。 ADO.NET 採用新穎的物件觀念,專為 Microsoft.NET 平台量身打造。 由於採用離線存取模式,可供多人同時存取,因此特別適合在 Internet 環境中使用。 本章重點: 使用「資料配接器組態精靈」及「資料表單精靈」快速建立簡單的資料庫應用程式。 說明如何透過 ADO.NET 對資料庫中某個資料表的記錄做查詢、新增、修改、刪除、關聯 … 等處理。.
E N D
視窗程式設計 Class 6 教師:黃聖方
第十章 ADO .NET與資料工具
10-1 本章概述 • C# .NET在資料庫程式設計方面,是使用ADO.NET做為存取資料庫的介面。 • ADO.NET採用新穎的物件觀念,專為Microsoft.NET平台量身打造。 • 由於採用離線存取模式,可供多人同時存取,因此特別適合在Internet環境中使用。 • 本章重點: • 使用「資料配接器組態精靈」及「資料表單精靈」快速建立簡單的資料庫應用程式。 • 說明如何透過ADO.NET對資料庫中某個資料表的記錄做查詢、新增、修改、刪除、關聯…等處理。
10-2 資料庫的概念 • 資料庫為電腦是用來處理資料(Data)的一項工具 • 當資料量增加時,如果只是隨便用幾個檔案(文字檔、Excel檔等)來存放,在資料的維護上就會隨著資料量的增加而逐漸顯得捉襟見肘。 • 例如:要在一個存放有數百萬行的文字檔中搜尋符合某個條件的資料,可能要花費數十秒、甚至數分鐘的時間。 • 在資料處理的便利性與靈活性上,資料庫化是最佳選擇、也是必然的一個趨勢。
10-2 資料庫的概念(續) • 資料表 欲建立一個資料庫,首先蒐集建立該資料庫所需要的各種資料表(Data Table)。 • 為簡化作業,故本課程以Access作為主要之資料庫系統。
10-2 資料庫的概念 二. 資料表與資料庫: 資料表為二維結構 • 每一水平列稱為一筆記錄(record); • 每一垂直行為一組欄位資料(column, field)。 • 舉例來說,一般資料庫最少會包含有一個資料表,資料表中包含了所需的資料欄位(Field)如下圖:包括員工編號、姓名、、性別和電話四個欄位,以及五筆記錄(Record)的資料: • 為資料表中特定的欄位設定Primary Key,代表每筆記錄的該欄位資料必須是唯一;例如身分證字號。
10-2 資料庫的概念 三. 資料的關聯 (Relation) • 「關聯式」資料庫的設計理念在於避免資料的重複登錄,因此在不同的資料表之間為了彼此能產生關聯,必須使資料表彼此間有對應的欄位方能產生關聯。 • 如下圖示,將「員工基本資料」資料表的「員工編號」欄位和「員工薪資」資料表的「員工編號」欄位關聯,結果便產生「員工薪資清單」。通常被參考的欄位必須要為Primary Key。 • 討論:如果資料庫沒有關聯式的話,會有和結果?
10-3 資料庫的建立步驟 (以下為資料庫程式管理階段) • 建立資料表(Table):用資料庫(如Access、SQL Server…等)所提供的管理工具,來建立資料庫及資料表。一個資料庫至少需要一個資料表,再從每一個資料表內建立相關的欄位成員。 • 輸入資料表的資料:組織好欄位成員的資料表,可進一步輸入資料內容。其輸入資料的途徑可利用資料庫管理系統本身提供的登錄工具直接來建立,亦可由程式語言軟體(如:C# .NET)所設計的應用程式在執行過程中建立。 (以下為Visual Studio.NET程式設計階段) • 與資料庫連線(Connection):利用Visual C# .NET工具箱中的「資料」工具,在表單產生一個資料連結器,或撰寫相關程式來與資料庫的某一個資料表相連結。 • 建立並設定可繫結資料庫的物件:Visual C# .NET所提供的控制項中,大部份都具有資料繫結(Data Binding)的功能,可以用來將所連結資料庫中某資料表中的某個欄位放入表單中的控制項內。 • 撰寫相關ADO .NET程式碼 • 執行所撰寫資料庫的應用程式
10-4 ADO .NET簡介 ADO .NET是微軟新一代 .NET資料庫的存取架構,ADO是ActiveX Data Objects的縮寫。ADO.NET它是資料庫應用程式和資料來源間溝通的橋樑,主要提供一個物件導向的資料存取架構,用來開發資料庫應用程式。為目前資料庫程式設計師用來開發資料庫應用程式的主要介面。
10-4 ADO .NET簡介 • ADO.NET是在 .NET Framework上存取資料庫的一組類別程式庫,它包含了 .NET Data Provider(資料提供者)以進行資料庫的連接與存取,透過ADO .NET,資料庫程式設計人員能夠很輕易地使用各種物件,來存取符合自己需求的資料庫內容。 • ADO.NET是應用程式和資料來源之間溝通的橋樑。透過ADO.NET所提供的物件,再配合SQL語法(Structured Query Language結構化查詢語言)就可以用來存取資料庫內的資料 。 • ADO.NET可提高資料庫的延展性。 • ADO.NET可以將資料庫內的資料以XML格式傳送到用戶端(Client)的DataSet物件中。 • 使用ADO.NET處理的資料可以透過HTTP通訊協定來傳遞。
XML文件 記憶體變數、控制項繫結、資料處理 XmlReader Command DataAdapter SelectCommand Connection InsertCommand Command UpdateCommand DeleteCommand DataReader .NET Data Provider 記憶體變數、控制項繫結、資料處理 DataSet DataRelation DataTable DataTable DataTable 資料庫 10-4 ADO.NET簡介 • ADO.NET架構分成 • .NET Data Provider(指資料來源提供者) • DataSet資料集(資料處理的核心)。
10-4 ADO .NET簡介 • .NET Data Provider:.NET資料提供者(.NET Data Provider)是指存取資料來源的一組類別程式庫,主要是為了統一對於各類型資料庫來源的存取方式而設計出一套高效能類別資料庫。如上圖,在.NET Data Provider中包含了下表四個物件:
10-4 ADO .NET簡介 • DataSet:DataSet(資料集)是在ADO .NET離線資料存取架構中的核心物件,主要的使用時機是在記憶體中暫存並處理各種從資料來源中所取回的資料。DataSet其實就是一個存放在記憶體中的資料暫存區,這些資料必須透過DataAdapter物件與資料庫做資料交換。在DataSet內部允許同時存放一個或多個不同的資料表(DataTable)物件。
10-5 .NET Data Provider • .NET Data Provider主要是用來連接資料庫、下達存取資料命令和擷取資料查詢結果 • 其結果可直接經過處理、放入DataSet、與來自多種資料來源的資料合併、或在多層次架構下的各層間作資料傳遞。 • 在使用程式來管理資料庫之前,要先確定要使用那種 Provider(資料提供者)來存取。 • .NET Data Provider是一組用來存取資料庫的物件,在 .NET Framework 中內建兩組: • SQL • OLE DB。 • 另外ODBC (Open DataBase Connectivity) 的.NET Data Provider可從http:// msdn.microsoft.com/downloads下載取得。
10-5 .NET Data Provider • SQL .NET Data Provider 支援Microsoft SQL Server 7.0及2000以上版本,由於它使用自己的通訊協定並且做過最佳化,所以可以直接存取SQL Server資料庫,而不必使用OLE DB或ODBC (開放式資料庫連接層)介面,因此執行效能較佳。若程式中是使用SQL .NET Data Provider,則該ADO.NET的預設物件名稱之前都會加上Sql,如:SqlConnection、SqlCommand。
10-5 .NET Data Provider • OLE DB .NET Data Provider 支援透過 OLE DB 介面來存取像Dbase、FoxPro、Excel、Access、Oracle、以及SQL Server…等各類型資料來源的存取。程式中若使用OLE DB .NET Data Provider,則ADO.NET物件的預設名稱之前會加上OleDb,如OleDbConnection、OleDbCommand。
10-6 使用資料工具建立資料庫應用程式 在使用C# .NET設計資料庫應用程式之前,我們必須先了解如何來與資料庫建立連線的方式。在Visual C# .NET整合環境下,提供和資料庫連線有下列兩種方式: • 使用資料工具 • 撰寫程式碼 在Visual C# .NET中工具箱的「資料」工具群組內有產生與資料庫相關的DataAdapter、Connection、Command…等控制項。 註:以上為VS.NET 2003的作法;2005中已將上述控制項整併為更佳精簡的控制項了。
10-7 資料庫的關聯查詢 既然資料庫可以放置許多相關的資料表,表示這些資料表中有些欄位資料是相關聯的。特別是在造冊、表列資料時,常常利用關聯(Relation)的技術從不同的資料表中取出相關欄位資料來對照。
10-7 資料庫的關聯查詢 • 範例 兩個資料表建立關聯實作 開啟Microsoft Office->Access建立一資料庫,並命名為SALARYDB.mdb,在其中建立Person(人事)和Salary(薪資)兩個資料表,以員工編號id_no欄位來當主索引鍵並建立關聯。 Personnel資料表各欄位設定如下: 註:數字欄位最好可以給初始值,例如:0
10-7 資料庫的關聯查詢 Salary資料表欄位設定如下
VS.NET 2005資料庫新控制項 • BindingSource • VS 2005將前述有關資料庫與資料表的連結直接整合成單一一個名為BindingSource的控制項。 • 將BindingSource加到視窗中,完成設定後就馬上將其他相關的控制項建立好。
BindingSource控制項 • 設定資料來源 • 點選「DataSource」屬性,選擇「加入專案來源…」。 • 選擇資料庫 • 點「新增連結」,選擇「Microsoft Access資料庫檔案」,按「繼續」。 • 在資料庫檔名之處選擇資料庫檔案來源,輸入密碼(記錄密碼)。 • 選擇「是,在連接字串中包含敏感性資料」。
BindingSource控制項 • 選擇資料庫物件 • 勾選需要的資料表後,按「完成」。
DataGridView控制項 • 用來檢視資料表中的資料 • 請將DataGridView控制項加入表單中,選擇要與顯示的資料表(會直接開啟小視窗讓你直接點選),請選擇Personnel