Microsoft Word - 4.doc

Similar documents
untitled

投影片 1

7 DataSet DataSet TableColumnDataSet DataSet NOTE DataSet DataAdapterDataSetDataAdapter DataSet DataSetDataSetDataSet NorthwindDataSet DataSet Dim Nor

導讀 ASP.NET HTML ASP 第一篇 基礎篇第 1 章 認識 ASP.NET ASP.NET ASP.NET ASP.NET ASP.NET 第 2 章 認識 Visual Studio 20 開發環境 Visual Studio 20 Visual Studio 20 第二篇 C# 程式

2 ADO.NET Internet 1.2

Chapter 00 導論

投影片 1

第七章

Microsoft PowerPoint - VB14.ppt


0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1

一 個 SQL Injection 實 例 的 啟 示 頁 2 / 6 因 此, 在 知 名 網 站 上 看 到 SQL Injection, 讓 人 驚 心, 卻 不 意 外 網 站 專 案 外 包 是 目 前 業 界 的 常 態, 而 在 價 格 取 勝 的 制 度 下, 低 價 得 標 的 S

untitled

untitled

投稿類別:資訊類

<463A5CC2A4B6ABD1A7D4BA5CBDCCD1A7D6B8C4CFD7DC5CA1B C B3CCD0F2C9E8BCC6A1B7BFCEB3CCD6B8C4CF2E646F63>

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

(Microsoft PowerPoint -

untitled

Visual Basic D 3D

Chapter 16 集合

2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF

IsPostBack 2

教案模板4-2


840 提示 Excel - Excel -- Excel (=) Excel ch0.xlsx H5 =D5+E5+F5+G5 (=) = - Excel 00

基于ECO的UML模型驱动的数据库应用开发1.doc

電腦設備LP _第九組記憶體規範書

ACI pdf

Autodesk Product Design Suite Standard 系統統需求 典型使用用者和工作流程 Autodesk Product Design Suite Standard 版本為為負責建立非凡凡產品的設計師師和工程師, 提供基本概念設計計和製圖工具, 以取得令人驚驚嘆

輕鬆學 Dreamweaver CS5 網頁設計..\Example\Ch0\ \.html..\example\ch0\ \mouse.txt..\example\ch0\ \ _Ok.html 學習重點 JavaScript 複製程式碼 mouse.txt Ctrl+C Ctrl+C 0-4

17-72c-1


Microsoft PowerPoint - ASP_NET_08

第 一 章 資料庫概念

untitled

1 1 Excel VBA 說明 ( ) (_) STEP4 Excel 2 STEP5 A1 1 B2 2 C3 3 STEP6 A1 STEP7 > > 1-11

Microsoft Word - CH07_P36

10-2 SCJP SCJD 10.1 昇陽認證 Java 系統開發工程師 的認證程序 Java IT SCJD

CC213

Excel VBA Excel Visual Basic for Application

Outlook 2010 設定說明 Offic 企業郵件 / 虛擬主機郵件 / Office 365

AutoCAD 用戶如何使用 ArchiCAD

The golden pins of the PCI card can be oxidized after months or years

untitled

Microsoft PowerPoint - 遊戲企劃

VB控件教程大全

Chapter 3 Camera Raw Step negative clarity +25 ] P / Step 4 0 ( 下一頁 ) Camera Raw Chapter 3 089

書面

FETnet - Acer Iconia Tab  (A500 Wi-Fi 版) 平板電腦操作指南

一 新增 SQL Express 2008 資料庫 步驟一 : 首先, 利用 VB 新增一個 Windows Form 應用程式的專案, 專案名稱為 MyDB 專案名稱為 MyDB 步驟二 : 接下來, 請執行 VB 功能表上的 專案 / 加入新項目, 此時, 請在 加 入新項目 的對話方塊中, 選

學 科 100% ( 為 單 複 選 題, 每 題 2.5 分, 共 100 分 ) 1. 請 參 閱 附 圖 作 答 : (A) 選 項 A (B) 選 項 B (C) 選 項 C (D) 選 項 D Ans:D 2. 下 列 對 於 資 料 庫 正 規 化 (Normalization) 的 敘

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e

多媒體應用 13 新增專案並完成版面配置 <ExMusic01> <activity_main.xml> ImageView ID imgplay ImageView ID imgstop ImageView ID imgfront TextView ID txtsong TextView ID t

Microsoft Word - 陈锐浩.doc

ADO.NET 資料庫存取架構


多層次傳銷與獎金系統

Outlook 2007 設定說明 Offic 企業郵件 / 虛擬主機郵件 / Office 365

untitled

1970 新技術的應用 X = 20 + B 13B δ13c X 1 X

<4D F736F F D B0D3B77EC3FEA7DEC3C0C476C1C9A5BFA6A1B8D5C3442DB57BA6A1B35DAD702DBEC7ACEC2E646F6378>

第一章.FIT)

大 綱 最 有 利 標 目 的 及 類 型 最 有 利 標 之 辦 理 方 式 準 用 最 有 利 標 取 最 有 利 標 精 神 最 有 利 標 之 類 型 及 其 相 關 規 定 適 用 最 有 利 標 準 用 最 有 利 標 及 取 最 有 利 標 精 神 作 業 程 序 及 實 務 分 析

ActiveX Control

「西醫基層總額支付委員會《第28次委員會議紀錄

目錄... ivv...vii Chapter DETECT

( )... 5 ( ) ( )

老人憂鬱症的認識與老人自殺問題

Microsoft Word - 1HF12序.doc

Microsoft Word - 讀報看科普─人體篇_橫_.doc

Microsoft Word - 2B802內文.doc

鍟嗗搧瑙傚療鈥㈤挗鏉

席 远 杨 一 人 了, 正 当 她 开 枪 时 却 发 现 子 弹 没 了 该 死, 只 能 赤 手 空 拳 了 洛 水 云 与 席 远 杨 交 起 手 来, 洛 水 云 出 手 招 招 致 命 想 那 席 远 杨 也 不 是 泛 泛 之 辈, 很 快 掌 握 了 洛 水 云 出 招 路 数 看

東區校園中法治教育種子師資教學研習營

閱 讀 素 材 V.S 分 組 方 式 的 差 異 化 教 學 工 具 表 班 級 :( ) 閱 讀 素 材 V.S 分 組 方 式 獨 立 閱 讀 夥 伴 閱 讀 ( 同 質 性 ) 夥 伴 閱 讀 ( 異 質 性 ) 友 善 陪 伴 虛 心 受 教 國 語 日 報 新 聞 生 活 文 藝 兒 童

11 天 山 区 区 环 卫 清 运 队 机 械 工 程 师 4011 C 1 不 限 不 限 机 电 具 有 两 以 工 作 经 12 天 山 区 乌 鲁 木 齐 市 第 15 小 会 计 4012 C 1 不 限 不 限 会 计 财 会 财 电 算 化 临 床 医 预 防 医 公 共 卫 生 与

xii 前言 P-1 Charles Perrow Normal Accidents P-1 vs.

CU0594.pdf

致理技術學院資訊管理學系專題企劃書格式建議書

Microsoft PowerPoint - course10.ppt

封面-12

Microsoft Word - 關聯性資料庫.doc

現在人類獲取地球內部訊息的方法, 是從可能影響我們身家性命安全的地震, 用數學模型把地震資料轉換成地震波速度, 進而獲得地底物質密度與深度的關係 地下世界知多少 km/s g/cm 3 P Gpa km S P S 3,000 3,000 ak K 透視地底 Percy Bridgma

Microsoft PowerPoint - sql2005_ch03.ppt

untitled

TPM BIOS Infineon TPM Smart TPM Infineon TPM Smart TPM TPM Smart TPM TPM Advanced Mode...8

R 與資料處理 R 與資料處理 Wush Wu 國立台灣大學 1 of 58

行政法概要 本章學習重點 本章大綱 第一節行政作用之概念 第二節行政作用之分類 一 行政程序法 第三節行政作用法之範圍 第四節行政作用之私法 行為 二 行政罰法三 行政執行法一 源起二 類型 第五節行政作用中的非 權力行為 一 類型 二 事實行為 第六節行政作用之內部 行為 一 行政規則

Microsoft Word - ACI chapter00-1ed.docx


Chapter 1: Introduction

目錄 C ontents Chapter MTA Chapter Chapter

Microsoft PowerPoint - SAGE 2010

CO 2 以鄰為壑的台灣建築產業

X 傳統育種技術 分子育種技術 基因改良育種

投影片 1

<4D F736F F D20C9CFBAA3CAD0BCC6CBE3BBFAB5C8BCB6BFBCCAD4C8FDBCB6BFBCCAD4B4F3B8D95FBDA8D2E9B8E55F5F E646F63>

09 F9 128 peer to peer, P2P file transfer protocol bittorrent 10 P2P P2P GNU/ Linux P2P CC 單機版的智慧財產權 vs. 人權戰爭 1980 DVD content

Transcription:

DataSet 設計工具是用來協助建立強型別資料集的視覺化工具, TableAdapter 則是讓您以視覺化的方式產生 ADO.NET 程式所需的 Select Insert Update Delete 精靈化工具, 然而若將 DataSet 設計工具與 TableAdapter 兩者結合, 在許多情況下可以有效替代一般 ADO.NET 資料庫存取及 DataSet 程式撰寫, 讓程式設計師能大幅減少手工程式碼的撰寫 增加生產力 還有 VS 2008 開發工具的 IntelliSense 支援及錯誤提示, 簡直只能用 簡單又具威力 一詞來形容 4-1 DataSet 資料集簡介 其實您可以將 DataSet 資料集看成存在於記憶體中的資料庫, 此話怎講? 因為 DataSet 資料結構與關連式資料庫極為相似,DataSet 資料集內可以包含資料表 資料行 資料列 關聯性和條件約束, 差別只是在於 DataSet 是將資料保存在記憶體, 而關連式資料庫是保存在硬碟中, 是故說 DataSet 就是存在於記憶體中的一個資料庫, 且由於記憶體存取資料極快, 故能夠提供高效能的資料存取與延展性 除此之外 DataSet 也可以處理 XML 的資料, 能夠輕易處理 轉換 XML 格式的資料 以下列出關連式資料庫的一些概念 : 關連式資料庫是由許多資料表所組成 關連式資料庫的資料表 (Table) 是由欄位 (columns) 及列 (rows) 所組成 資料表與資料表間會有關聯性 (Relation) 來建立彼此的關連 而資料表上會有條件約束 (constrain) 來維持資料的一致性及正確性 將以上關連式資料庫的概念轉換成 DataSet 資料集的概念就是 : DataSet 資料集是由許多的 DataTable( 資料表 ) 所組成 DataTable 是由 DataColumn( 資料欄 ) 及 DataRow( 資料列 ) 所組成 4-2

DataSet 設計工具與 TableAdapter 在資料存取的應用 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 DataTable 與 DataTable 間會有 DataRelation 來建立彼此的關連 DataTable 上會有條件約束來維持資料的一致性及正確性 所以祭司才講, 你可以直接將 DataSet 想像成在電腦記憶中的一個小型資料庫 若你是 ASP.NET 新手, 以前對 DataSet 沒有深入研究的話, 下圖是 DataSet 物件模型, 圖中描述了完整 DataSet 所包含的階層式關係及物件, 不過別怕, 一般資料存取比較常用的是 DataSet 本身,DataTable DataRow DataView 次之, 其他的部分很少使用, 不懂沒什麼大礙 圖 4-1 DataSet 物件模型 4-2 DataSet 資料集之存取運用 DataSet 在 ADO.NET 程式中的功能及應用很多, 但不是本章介紹的重點, 祭司隱含認定各位對 DataSet 的功能及應用都很熟悉, 故不贅言 ( 若不熟的話, 請自行參考其他 ADO.NET 基本資料 ) 本章著重於如何將傳統手工撰寫 ADO.NET 程式的方式, 轉換成 強型別 DataSet 及 TableAdapter 的設計與應用, 進一步簡化 ADO.NET 程式, 並得到視覺化精靈工支援, 則是本章述說的重點 4-3

範例 4-1 傳統 ADO.NET 程式與 TableAdapter 程式之對比 本範例將以傳統 ADO.NET 程式與 TableAdapter 程式進行對比, 從而解釋 DataSet 設計工具及 TableAdapter 在 ADO.NET 程式開發所帶來的方便與新思維, 請參考 SqlDataSet.aspx 程式, 例如以下是一段存取 Northwind 資料庫的傳統 ADO.NET 程式 : 傳統 ADO.NET 資料庫程式 01 ' 傳統 ADO.NET 程式 02 Protected Sub btnadonet_click(byval sender As Object, ByVal e As System.EventArgs) Handles btnadonet.click 03 ' 使用 SqlDataAdapter 過程需要 SqlConnection 及 SqlCommand 輔助 04 Dim adapter As New SqlDataAdapter() 05 06 ' 建立資料連線 07 Dim conn As New SqlConnection("Data Source=.;Initial 08 conn.open() 09 10 ' 建立資料命令 Catalog=Northwind;user id=sa;password=test") 11 Dim cmd As New SqlCommand("select EmployeeID,LastName, FirstName,Title,Address,City from Employees", conn) 12 adapter.selectcommand = cmd 'Adapter 指定使用 SqlCommand 13 14 ' 建立弱型別 DataSet 資料集, 以容納資料 15 Dim ds As New DataSet() 16 adapter.fill(ds, "Employees") 17 18 ' 關閉或釋放資料庫連線等相關物件 19 cmd.dispose() 20 adapter.dispose() 21 conn.close() 22 23 ' 指定 GridView 控制項資為 ds 24 gvemployees.datasource = ds 25 gvemployees.databind() ' 資料繫結 26 End Sub 以上除了第 23~25 行不算, 共有 10 行 ADO.NET 程式, 早期在 ASP.NET 1.x 時代, 許多對 ADO.NET 不熟稔的程式設計師寫是會寫, 但常忘了許多細節, 例如 SqlConnection 資料庫連線開了不關 忘了 Dispose 4-4

DataSet 設計工具與 TableAdapter 在資料存取的應用 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 用完的物件讓 CLR 回收, 或濫用 DataSet, 往往造成 ADO.NET 程式效能一落千丈 ( 當然這和.NET 當時算是很新技術也有關 ) 除此之外若是你在撰寫 Insert 或 Update 帶參數之命令定義時, 倘若資料表欄位有 20~30 個, 不但手工宣告起來超累, 且拼錯字或少了一兩個欄位也是常有, 以致於 ADO.NET 程式一直發生錯誤, 除錯過程不但困難, 且也許還得花上 1~2 個小時也說不定, 所以這是手工 ADO.NET 的痛楚, 雖然它很強大 至於 DataSet 設計工具與 TableAdapter 的出現, 可以改善什麼呢? 我們先將上面的程式轉換成 TableAdapter 程式, 看看需要幾行 使用 DataSet 設計工具與 TableAdapter 01 ' 實體化 TableAdapter 02 Dim adapter As New dsnorthwindtableadapters.employeesbasictableadapter() 03 04 gvemployees.datasource = adapter.getbasicdata() 05 gvemployees.databind() 答案是 1 行, 天哪! 光是這種落差, 就值得我們好好地來探討 DataSet 設計工具與 TableAdapter 有什麼迷人之處了, 各位可以執行 SqlDataSet.aspx 程式看看 圖 4-2 以 TableAdapter 程式讀取資料 4-5

4-3 強型別 DataSet vs. 弱型別 DataSet 一直以來,DataSet 資料集在.NET 的程式開發上佔有很重要的地位, 尤其是在資料庫或 GridView 控制項資料顯示方面,DataSet 的使用頻率非常的高 也許你非常熟悉 DataSet 的使用, 但仍有許多人不知道 DataSet 有強型別與弱型別之分, 強型別 DataSet 的英文是 Strongly Typed DataSet, 或可簡稱 Typed DataSet, 弱型別 DataSet 英文是 Weakly Typed DataSet, 或可簡稱 untyped DataSet 然而知道 DataSet 有強型別與弱型別之分又如何?So what? 對於程式設計師而言, 若只是純粹探討技術本質上的差異, 可能大多數人都興趣缺缺, 必須這個技術上的差異, 要能夠帶來實質上的效益, 才能讓程式設計師產生共鳴, 而強型別 DataSet 相較於弱型別 DataSet 有哪些技術上的優點呢? 簡單列舉如下 : IntelliSense 支援 : 在 Design Time 設計時, 使用強型別 DataSet 相關物件時, 可以得到 Visual Studio 的 IntelliSense 支援, 包括屬性 方法與事件的提示, 讓程式開發更為直覺容易 欄位名稱提示 : 在 Design Time 時, 程式設計師在存取強型別 DataSet 中的 DataTable 集合或 DataTable 欄位時,Visual Studio IntelliSense 可以直接顯示 DataTable 或 DataTable 資料欄位 (DataColumn) 名稱, 而非使用抽象的集合索引, 因此不會輸入錯誤資料欄位名稱, 也不需要記憶或反覆查詢 DataTable 含有多少資料欄位 精靈輔助 : 在 Design Time 時,VS 2008 針對強型別 DataSet 提供了較多的工具支援, 包括了 DataSet 設計工具及 TableAdapter 組態精靈, 透過許多精靈化自動機制, 可協助程式設計師輕鬆又快速建立相關的 Select Insert Update 與 Delete 等 SQL 命令 資料型別檢查 : 在 Compile Time 編譯時, 修改或新增 DataTable 中資料欄位值時, 就可以確認或發現資料欄位型態是否正確, 例如資料若為 Integer 型態, 而你卻指定 String 型態, 在以往則是必須等到 Runtime 執行時, 程式當掉 (Crash) 後, 系統才會提示你程式碼中的型別不一致的錯誤 4-6

DataSet 設計工具與 TableAdapter 在資料存取的應用 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 隱藏複雜度 : 甚至在 DataSet 設計工具與 TableAdapter 的輔助下, 程式設計師甚至不需要寫任何一行的 SqlConnction SqlCommand 或 DataReader 程式, 就可以讀取資料庫中的資料, 因為 TableAdapter 會替您建立與管理 ADO.NET 相關程式, 這對於沒有經歷過純粹 ADO.NET 程式洗禮的朋友, 是一大福音 那至於效能呢? 究竟強型別與弱型別 DataSet 誰的執行效能會比較快呢? 原本祭司的直覺是強型別 DataSet 執行效能會比較快, 因為強型別 DataSet 的資料欄位可以不必經過型別的轉換, 所以 應該 會快過弱型別 DataSet 但是單憑推論不足以讓祭司直接下定論, 若只憑祭司一已之 感覺, 就直接告訴讀者誰的效能比較快, 這樣子未免太過草率 於是乎, 祭司先查了美國微軟 MSDN 網站及 Google 上一些專家的文章, 而這些專家在不同的評比測試中, 使用了不同方法, 有的測試證明強型別 DataSet 較快, 但又有的指出弱型別 DataSet 是比較快的, 可是這樣的結論著實令祭司困惑, 因為這樣一來, 我就無法直接了當告訴讀者二者誰是比較快的, 於是乎我想到何不自已寫一段效能測試的程式, 以實際的測試數據來印證這個疑惑, 至於效能測試在本章後面會有一個小節來專門探討 4-4 強型別 DataSet 建立 上面說了一堆林林總總, 但到底要如何建立強型別 DataSet? 使用 VS 2008( 或 VS 2005) 設計強型別 DataSet 的方式有兩種 : 第一種是透過 資料來源組態精靈 第二種是透過 DataSet 設計工具, 兩種方式都是透過視覺化精靈的方式, 在基本層次上是可以不需要寫程式, 但也可以透過 Code-Behind 程式來進階操控, 以下再分兩個子小節來詳論 資料來源組態精靈 建立強型別 DataSet DataSet 設計工具 圖 4-3 建立強型別 DataSet 之方式 4-7

4-4-1 以資料來源組態精靈建立強型別 DataSet 資料集 所謂的 資料來源組態精靈 就是指 伺服器總管 下的 資料連線 組態精靈, 以 資料來源組態精靈 建立強型別 DataSet 資料集是最快速直覺的方式, 以下是範例解說 範例 4-2 以資料來源組態精靈建立強型別 DataSet 資料集 本範例將示範如何以 資料來源組態精靈 建立強型別 DataSet 資料集, 步驟說明如下 : Step 1 : 加入 DataSet 請在專案中加一個 DataSet, 並命名為 dsnorthwind, 而此 DataSet 將用來讀取及保存 Northwind 資料庫的資料 Step 2 : 建立資料庫連線在此請以 伺服器總管 下 資料連線 組態精靈, 建立對 SQL Server 中 Northwind 資料庫的連線 圖 3-31 VS 2008 的資料庫連接設定 4-8

DataSet 設計工具與 TableAdapter 在資料存取的應用 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 Step 3 : 拖曳資料表到 DataSet 之中在選取 Employees 資料表後, 將其直接拖曳到 DataSet 設計工具之中, 系統便會自動產生 Employees 的 DataTable 及 TableAdapter 定義, 如此便完成強型別 DataSet 的設計了 DataTable 定義 拖曳 TableAdapter 圖 4-4 將資料表拖曳到 DataSet 設計工具之中 那建立好 DataSet 之後, 應用程式要如何讀取強型別 DataSet 中之資料, 或如何透過 DataSet 來進行資料的維護? 基本上有兩種方式 : 使用 ObjectDataSource 控制項讀取強型別 DataSet 資料, 以 Code-Behind 程式操控 DataSet 與 TableAdapter, 但在這小節先教各位使用 ObjectDataSource 控制項方式, 後續小節再教各位如何以 Code-Behind 方式撰寫 DataSet 與 TableAdapter 程式 4-9

範例 4-3 以 ObjectDataSource 控制項讀取強型別 DataSet 資料由於 DataSet 是屬於 Object 物件, 故可以運用 ObjectDataSource 控制項來對 DataSet 進行資料的讀取或更新, 也就是定義 ObjectDataSource 與 DataSet 中 TableAdapter 的對應關係, 如此便可以將資料讀取回來, 並交由 GridView 等控制項來顯示資料, 請參考 objectds.aspx 程式, 步驟說明如下 : Step 1 : 建立控制項及頁面配置請建立 GridView 及 ObjectDataSource 控制項, 並設定 GridView 資料來源為 ObjectDataSource 控制項 Step 2 : 建立 ObjectDataSource 控制項與 TableAdapter 之對應關係請點選 ObjectDataSource 智慧標籤之 設定資料來源, 並選擇 EmployeeTableAdapter 物件, 按 下一步 按鈕, 設定其相關之 Select Insert Update 與 Delete 對應方法, 再按 完成 按鈕, 如此便完成設計 圖 4-5 選擇 TableAdapter 商務物件 4-10

DataSet 設計工具與 TableAdapter 在資料存取的應用 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 對應方法 圖 4-6 設定 ObjectDataSourec 與 TableAdapter 方法的對應 而設定 ObjectDataSource 與 TableAdapter 之關的對應關係, 其原理是 ObjectDataSource 有 Select Insert Update 與 Delete 命令, 而 TableAdapter 也有此四種命令之定義, 故 ObjectDataSource 只是將 SQL 命令傳遞給 TableAdapter, 而真正執行相關 SQL 命令的人是 TableAdapter,ObjectDataSource 本身則未接觸到資料庫連線與資料擷取的過程 圖 4-7 以 ObjectDataSource 讀取強型別 DataSet 資料執行畫面 4-11

4-4-2 以 DataSet 設計工具設計強型別 DataSet 資料集 另一個設計強型別 DataSet 的方式是使用 VS 2008 中的 DataSet 設計工具, 在 DataSet 的工具箱中有四個子項目, 分別是 :TableAdapter Query DataTable Relation, 而此四者各有不同的妙用與時機, 其功用說明如下表 表 4-1 DataSet 工具箱子項目 項目 TableAdapter Query DataTable Relation 說明負責對資料庫進行連線, 以及執行 Select Insert Update 與 Delete SQL 命令, 甚至是呼叫預存程序 (Stored Procedure) 建立全域的 Query 查詢 建立 DataTable 定義 建立 DataTable 之間的關連性 DataSet 工具箱項目 圖 4-8 DataSet 工具箱子項目畫面 本小節先針對 TableAdapter 功能進行介紹, 其他項目在後續小節才會陸續介紹, 以下是說明 4-12

DataSet 設計工具與 TableAdapter 在資料存取的應用 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 TableAdapter 組態精靈 TableAdapter 是 DataSet 設計工具中最重要的一部分, 它除了可以定義 DataTable 之外, 尚可以定義 Select Insert Update 與 Delete 命令, 並且每個加入到 TableAdapter 之中的查詢會被公開成為方法, 因此也可以透過 Code-Behind 程式化的方式來呼叫 TableAdapter 所定義的查詢 範例 4-4 以 TableAdapter 建立 DataTable 定義及查詢 ( 單一資料表 Table 查詢 ) 本範例將示範如何利用 TableAdapter, 在強型別 DataSet 中建立 DataTable 定義及 SQL 查詢, 請參考 DataSetDesigner.aspx 程式, 以下為步驟說明 : Step 1 : 開啓 DataSet 設計工具在先前已建立一個名為 dsnorthwind 的強型別 DataSet( 若沒有的話請自行加入 ), 請點選開啓 dsnorthwind, 然後工具箱中在 DataSet 的分類會出現四個子項目 ( 圖 4-9), 這四個項目就是 DataSet 設計工具可以運用的部分 Step 2 : 建立 TableAdapter 請從工具箱中拖曳一個 TableAdapter 到 DataSet 之中, 接著精靈會提示建立一個資料庫連線, 請設定對 Northwind 資料庫相關連線資料 圖 4-9 拖曳 TableAdapter 圖 4-10 建立資料庫連線 4-13

Step 3 : 設定 TableAdapter 命令類型由於我們欲讀取的是 Northwind 資料庫中的 Employees 資料表, 故請選擇 使用 SQL 陳述式 按 下一步 按鈕, 接著在輸入 SQL 陳述式畫面中點選右下角之 查詢產生器, 用來建立 SQL 查詢 圖 4-11 選擇命令類型 圖 4-12 建立 SQL 查詢 4-14

DataSet 設計工具與 TableAdapter 在資料存取的應用 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 Step 4 : 建立 Employees 資料查之 SQL 查詢在此請加入 Employees 資料表, 勾選 所有資料行, 建立 Select * from Employees 的 Select 查詢 圖 4-13 建立 Employees 資料表 SQL 查詢 Step 5 : 建立 TableAdapter 方法此步驟主要是建立 TableAdapter 的方法, 而預設會建立 Fill 及 GetData 兩個方法, 而採用預設名稱即可 ( 但也可自行變更名稱 ), 而這兩個方法屆時就會被公開成為 TableAdapter 方法, 並且在 VS 2008 的 IntelliSense 中可以看到 ; 而在寫 Code-Behind 程式時, 可以針對這兩個方法進行呼叫 圖 4-14 建立 TableAdapter 方法 圖 4-15 完成 SQL 查詢及方法建立 4-15

Step 5 時所建立 Fill 及 GetData 兩個方法, 在您寫 Code-Behind 程式時會是如下圖獲得 VS 2008 的 IntelliSense 提示, 而實際 TableAdapter 語法在後續會講解 Fill 及 GetData 方法 圖 4-16 TableAdapter 的 Fill 及 GetData 方法 最後以 DataSet 設計工具所建立好的 DataSet, 若希望交由 GridView 等控制項顯示內容, 一樣用 ObjectDataSource 控制項設定與 TableAdapter 的對應即可 圖 4-17 以 GridView 顯示 DataSet 資料 4-16