第一章 - 喵喵喵工作室

Download Report

Transcript 第一章 - 喵喵喵工作室

視窗程式設計
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通訊協定來傳遞。
10-4 ADO.NET簡介
XML 文件
ADO.NET架構分成


.NET Data
Provider(指資料來
源提供者)
DataSet資料集(資
料處理的核心)。
DataSet
記憶體變數、
控制項繫結、
資料處理
DataRelation
DataTable DataTable
DataTable
XmlReader
DataAdapter
Command
SelectCommand
Connection
InsertCommand
UpdateCommand
Command
DeleteCommand
DataReader
資料庫
.NET Data Provider
記憶體變數、
控制項繫結、
資料處理
10-4 ADO .NET簡介
1.
.NET Data Provider:.NET資料提供者(.NET Data
Provider)是指存取資料來源的一組類別程式庫,主要是為
了統一對於各類型資料庫來源的存取方式而設計出一套高效
能類別資料庫。如上圖,在.NET Data Provider中包含了下
表四個物件:
物件名稱
功能說明
Connection
提供和資料庫來源的連接功能。
Command
提供執行存取資料庫命令,並傳送資料或修改資料的功能,
例如執行SQL命令、預存程序。
DataAdapter
擔任DataSet物件和資料來源間的橋樑。DataAdapter使用四個
Command物件來執行查詢、新增、修改、刪除的SQL命
令,把資料載入DataSet,或者把DataSet內的資料更新回
資料來源。
DataReader
透過Command物件執行SQL查詢命令取得資料流,以便進行
高速、唯讀的資料瀏覽功能。
10-4 ADO .NET簡介
2.
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
1. 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
2. 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 使用資料工具建立資料庫應用程式
1.
2.
在使用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資料表各欄位設定如下:
欄位名稱
Access
資料類型
欄位說明
id_no
文字
員工編號
name
文字
姓名
gender
數字
性別
phone_no
文字
電話
備註
主索引欄位
預設為0
註:數字欄位最好可以給初始值,例如:0
10-7 資料庫的關聯查詢
Salary資料表欄位設定如下
欄位名稱
Access資料類
型
欄位說明
備註
id_no
文字
員工編號
主索引欄位
日期
日期/時間
支領日期
主索引欄位
id_position
文字
員工職位
salary
數字
薪資
預設為0
overtime_pay
數字
加班費
預設為0
bonus
數字
獎金
預設為0
VS.NET 2005資料庫新控制項
BindingSource


VS 2005將前述有關資料庫
與資料表的連結直接整合成
單一一個名為
BindingSource的控制項。
將BindingSource加到視窗
中,完成設定後就馬上將其
他相關的控制項建立好。
BindingSource控制項
設定資料來源





點選「DataSource」屬性,選擇「加入專案
來源…」。
選擇資料庫
點「新增連結」,選擇「Microsoft Access
資料庫檔案」,按「繼續」。
在資料庫檔名之處選擇資料庫檔案來源,輸
入密碼(記錄密碼)。
選擇「是,在連接字串中包含敏感性資料」。
BindingSource控制項
選擇資料庫物件
勾選需要的資料表後,按「完成」。
DataGridView控制項
用來檢視資料表中的
資料

請將DataGridView控
制項加入表單中,選
擇要與顯示的資料表
(會直接開啟小視窗
讓你直接點選),請
選擇Personnel