第 10 章 網頁資料庫的查詢 10-1 從資料表取得單一欄位值 10-2 DataReader 物件以表格顯示資料表 10-3 SQL 的資料庫查詢指令 10-4 DataSet 物件的資料庫查詢 10-5 DataSet 物件的資料篩選 10-6 DataSet 物件與 XML.

Slides:



Advertisements
Similar presentations
Divide-and-Conquer. 什麼是 divide-and-conquer ? Divide 就是把問題分割 Conquer 則是把答案結合起來.
Advertisements

6-1 指標簡介 6-2 指標與陣列 6-3 動態配置記憶體 6-4 本章綜合練習
布林代數的應用--- 全及項(最小項)和全或項(最大項)展開式
學習C++的基本語法 認識關鍵字與識別字的不同 學習程式碼偵錯的流程 學習如何提高程式的可讀性
:Word Morphing ★★☆☆☆ 題組: Problem Set Archive with Online Judge 題號: 10508:word morphing 解題者:楊家豪 解題日期: 2006 年 5 月 21 日 題意: 第一行給你兩個正整數, 第一個代表下面會出現幾個字串,
“Rule” By OX. By Check CREATE TABLE 員工薪資 ( 編號 int IDENTITY PRIMARY KEY, 薪資 smallmoney, CHECK ( 薪資 > 0 AND 薪資
如何將數字變成可用之資訊 現代化資料處理與應用概念. 如何將數字變成可用之資訊 人最容易接受的訊息是圖像化資訊。 在一堆數字中,要進行比較分析,一般會使用表格形 式計算與分析。 所以一般我們會將數字依關聯性, 轉換成表格計算與分析。 此表格一般稱試算表或稱表格。 再將結果轉換為圖表,進行比較與分析。
BY OX. 檢視表與資料表的差異性 查詢 (query) 檢視表 (View) 的紀錄,是經由查詢 (query) 而來,而檢 視表的資料來源可以是單一資料表或是多資料表,甚 至其他檢視表 但檢視表中的紀錄只存在資料表中.
1 Web of Science 利用指引 單元二 瀏覽與處理查詢結果. 2 瀏覽檢索結果 查出的結果,預設以時間排列, 使用者可改變結果的排列方式: 還可以依被引用次數、相關度、 第一作者、刊名、出版年等排序 回到前先查的結果畫面 點選想看資料的完整書目 本館訂購範圍的期刊 全文,便可直接連結.
1. 假設以下的敘述為一未提供 “ 捷徑計算 ” 能力的程式段,試用程 式設計的技巧,使此敘述經此改 寫的動作後,具有與 “ 捷徑計算 ” 之 處理方法相同之處理模式。 if and then E1 else E2 endif.
JAVA 程式設計與資料結構 第十四章 Linked List. Introduction Linked List 的結構就是將物件排成一列, 有點像是 Array ,但是我們卻無法直接經 由 index 得到其中的物件 在 Linked List 中,每一個點我們稱之為 node ,第一個 node.
MATLAB 程式設計 第 11 章 多維陣列 多維陣列的定義 在 MATLAB 的資料型態中,向量可視為 一維陣列,矩陣可視二維陣列,對於維 度 (Dimensions) 超過 1 的陣列則均可視 為「多維陣列」 (Multidimesional Arrays , 簡稱 N-D Arrays)
第 18 章 名稱空間與例外處理 18-1 名稱空間 18-1 名稱空間 18-2 例外處理 18-2 例外處理.
8.1 何謂高度平衡二元搜尋樹 8.2 高度平衡二元搜尋樹的加入 8.3 高度平衡二元搜尋樹的刪除
McGraw-Hill/Irwin © 2003 The McGraw-Hill Companies, Inc.,All Rights Reserved. 肆 資料分析與表達.
1 單元三 查詢結果的引用分析 Web of Science 利用指引 查看出版及被引用情況 在查詢結果的清單中,可以瀏覽近 20 年來查詢主題出版和被引用的情況。
JAVA 程式設計與資料結構 第十章 GUI Introdution III. File Chooser  File Chooser 是一個選擇檔案的圖形介面, 無論我們是要存檔還是要開啟檔案,使 用這個物件都會讓我們覺得容易且舒適。
第 7 章 程序與函數 7-1 模組化程式設計 7-1 模組化程式設計 7-2 VB.NET 的程序與函數 7-2 VB.NET 的程序與函數 7-3 程序與函數的變數範圍 7-3 程序與函數的變數範圍 7-4 VB.NET 常用的內建函數 7-4 VB.NET 常用的內建函數 7-5 遞迴函數 7-5.
Introduction to Java Programming Lecture 5: Using Java Classes : String & Math Spring 2009.
第 1 章 PC 的基本構造. 本章提要 PC 系統簡介 80x86 系列 CPU 及其暫存器群 記憶體: Memory 80x86 的分節式記憶體管理 80x86 的 I/O 結構 學習組合語言的基本工具.
Introduction to Java Programming Lecture 17 Abstract Classes & Interfaces.
: The largest Clique ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11324: The largest Clique 解題者:李重儀 解題日期: 2008 年 11 月 24 日 題意: 簡單來說,給你一個 directed.
7 陣列與搜尋 7.1 陣列 一般資料變數 宣告一維陣列 起始一維陣列 7-4
第12章 建立多表單與模組的應用程式 12-1 Visual Basic的方案與專案 12-2 模組化Visual Basic應用程式
1 Netlibrary 電子書 Netlibrary 創始於 1998 年,是世界知名的電子書資 料庫,提供 450 多家出版社所出版近 100,962 ( 止)本的電子書,且以每月 2,000 本的 速度增加中。其中 80% 屬於學術性圖書,其餘 20% 一般圖書, 90% 以上為.
: Problem A : MiniMice ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11411: Problem A : MiniMice 解題者:李重儀 解題日期: 2008 年 9 月 3 日 題意:簡單的說,題目中每一隻老鼠有一個編號.
第 10 章 視窗應用程式的工具列與 功能表 10-1 主功能表控制項 10-1 主功能表控制項 10-2 快顯功能表控制項 10-2 快顯功能表控制項 10-3 工具列控制項 10-3 工具列控制項 10-4 狀態列控制項 10-4 狀態列控制項 10-5 字型與色彩對話方塊 10-5 字型與色彩對話方塊.
資料庫程式設計與系統管理 SQL Server 2005 Express 第六章 進階資料庫設計.
: Multisets and Sequences ★★★★☆ 題組: Problem Set Archive with Online Judge 題號: 11023: Multisets and Sequences 解題者:葉貫中 解題日期: 2007 年 4 月 24 日 題意:在這個題目中,我們要定義.
:Nuts for nuts..Nuts for nuts.. ★★★★☆ 題組: Problem Set Archive with Online Judge 題號: 10944:Nuts for nuts.. 解題者:楊家豪 解題日期: 2006 年 2 月 題意: 給定兩個正整數 x,y.
從此處輸入帳號密碼登入到管理頁面. 點選進到檔案管理 點選「上傳檔案」上傳資料 點選瀏覽選擇電腦裡的檔案 可選擇公開或不公開 為平台上的資料夾 此處為檔案分類,可顯示在展示頁面上,若要參加 MY EG 競賽,做品一律上傳到 “ 98 MY EG Contest ” 點選此處確定上傳檔案.
第 13 章 檔案與資料夾處理 13-1 檔案與資料夾操作 13-1 檔案與資料夾操作 13-2 循序檔案的文字檔案讀寫 13-2 循序檔案的文字檔案讀寫 13-3 隨機檔案的處理 13-3 隨機檔案的處理 13-4 二進位檔案的讀寫 13-4 二進位檔案的讀寫 13-5 檔案對話方塊 13-5 檔案對話方塊.
資料結構實習-一 參數傳遞.
6-2 認識元件庫與內建元件庫 Flash 的元件庫分兩種, 一種是每個動畫專 屬的元件庫 (Library) ;另一種則是內建元 件庫 (Common Libraries), 兩者皆可透過 『視窗』功能表來開啟, 以下即為您說明。
第 5 章 選擇控制項與條件敘述 5-1 結構化程式設計 5-1 結構化程式設計 5-2 關係與邏輯運算子 5-2 關係與邏輯運算子 5-3 簡單的條件敘述 5-3 簡單的條件敘述 5-4 選擇控制項 5-4 選擇控制項 5-5 巢狀條件敘述 5-5 巢狀條件敘述 5-6 多選一條件敘述 5-6 多選一條件敘述.
1 Introduction to Java Programming Lecture 2: Basics of Java Programming Spring 2008.
Management Abstracts Retrieval System; MARS 檢索操作.
: Beautiful Numbers ★★★★☆ 題組: Problem Set Archive with Online Judge 題號: 11472: Beautiful Numbers 解題者:邱經達 解題日期: 2011 年 5 月 5 日 題意: 若一個 N 進位的數用到該.
Section 4.2 Probability Models 機率模式. 由實驗看機率 實驗前先列出所有可能的實驗結果。 – 擲銅板:正面或反面。 – 擲骰子: 1~6 點。 – 擲骰子兩顆: (1,1),(1,2),(1,3),… 等 36 種。 決定每一個可能的實驗結果發生機率。 – 實驗後所有的實驗結果整理得到。
JAVA 程式設計與資料結構 第二十章 Searching. Sequential Searching Sequential Searching 是最簡單的一種搜尋法,此演 算法可應用在 Array 或是 Linked List 此等資料結構。 Sequential Searching 的 worst-case.
演算法 8-1 最大數及最小數找法 8-2 排序 8-3 二元搜尋法.
845: Gas Station Numbers ★★★ 題組: Problem Set Archive with Online Judge 題號: 845: Gas Station Numbers. 解題者:張維珊 解題日期: 2006 年 2 月 題意: 將輸入的數字,經過重新排列組合或旋轉數字,得到比原先的數字大,
第 17 章 樣板 17-1 樣板的基礎 17-1 樣板的基礎 17-2 樣板函數 17-2 樣板函數 17-3 樣板類別 17-3 樣板類別 17-4 非型態參數的樣板類別 17-4 非型態參數的樣板類別 17-5 樣板類別的繼承 17-5 樣板類別的繼承 17-6 特化樣板與靜態成員 17-6 特化樣板與靜態成員.
Chapter 10 m-way 搜尋樹與B-Tree
第12章 多重表單與模組的應用程式 12-1 VB.NET的方案與專案 12-2 模組化VB.NET應用程式 12-3 多重表單的應用程式
: Function Overloading ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 11032:Function Overloading 解題者:許智祺 解題日期: 2007 年 5 月 8 日 題意:判對輸入之數字是否為.
第 17 章 泛型類別與.NET Framework 17-1.NET Framework 類別函式庫 17-1.NET Framework 類別函式庫 17-2 使用.NET FCL 的類別 17-2 使用.NET FCL 的類別 17-3 My 名稱空間的類別 17-3 My 名稱空間的類別 17-4.
1 Introduction to Java Programming Lecture 2: Basics of Java Programming Spring 2009.
5 重複迴圈 5.1 增減運算符號 增量運算符號 減量運算符號
第 13 章 ADO.NET 建立網頁資料庫 13-1 網頁資料庫的基礎13-1 網頁資料庫的基礎 13-2 建立資料庫連接13-2 建立資料庫連接 13-3 ADO.NET 的 DataReader 物件13-3 ADO.NET 的 DataReader 物件.
SQL 進階查詢.
INTRODUCTION TO MATLAB SHAWNNTOU. What Is MATLAB? MATLAB® is a high-performance language for technical computing. MATLAB® is a high-performance language.
第 6 章 迴圈結構 6-1 計數迴圈 6-1 計數迴圈 6-2 條件迴圈 6-2 條件迴圈 6-3 巢狀迴圈 6-3 巢狀迴圈 6-4 While/End While 迴圈 6-4 While/End While 迴圈 6-5 跳出迴圈 6-5 跳出迴圈 6-6 VB.NET 的錯誤處理 6-6 VB.NET.
著作權所有 © 旗標出版股份有限公司 第 3 章 資料庫物件的關係. 本章提要 Access 資料庫物件的關係 Access 資料庫物件的關係 簡介 Access 的七大物件 簡介 Access 的七大物件 Access 的群組 Access 的群組.
函式 Function 東海大學物理系‧資訊教育 施奇廷. 函式簡介 當程式越來越大、越複雜時,程式的維護、 除錯會變得更困難,此時必須引入函式來 簡化程式或將程式分段,將程式重複的部 分改寫為函式,將程式「模組化」 這種作法有下列優點:節省程式發展的時 間、邏輯容易瞭解、程式容易除錯、可分 工合作完成程式.
第 9 章 網頁資料庫的操作 9-1 網頁資料庫的基礎 9-2 資料庫與 ODBC 的建立 9-3 SQL 語言的基礎 9-4 ADO.NET 的基礎 9-5 SQL 指令的資料庫操作 9-6 DataSet 的資料庫操作 9-7 使用參數 SQL 指令的資料庫操作.
Visual C++重點複習.
電子書 ( Netlibrary ) 檢索說明 龍華科技大學圖書館. 檢索類型 檢索欄位與限制 在檢索中使用布林邏輯運算元 檢索結果 特殊檢索.
第 5 章 選擇控制項與條件敘述 5-1 結構化程式設計 5-1 結構化程式設計 5-2 關係與邏輯運算子 5-2 關係與邏輯運算子 5-3 簡單的條件敘述 5-3 簡單的條件敘述 5-4 選擇控制項 5-4 選擇控制項 5-5 巢狀條件敘述 5-5 巢狀條件敘述 5-6 多選一條件敘述 5-6 多選一條件敘述.
1 Introduction to Java Programming Lecture 2: Basics of Java Programming Spring 2010.
Microsoft Excel.
第8章 字串與陣列 8-1一維陣列的處理 8-2 字串處理 8-3 多維陣列的處理 8-4 動態陣列與參數傳遞 8-5 陣列排序與搜尋.
實體關係模型 (ER Model).
: Finding Paths in Grid ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11486: Finding Paths in Grid 解題者:李重儀 解題日期: 2008 年 10 月 14 日 題意:給一個 7 個 column.
著作權所有 © 旗標出版股份有限公司 第 14 章 製作信封、標籤. 本章提要 製作單一信封 製作單一郵寄標籤.
幼兒行為觀察與記錄 第八章 事件取樣法.
第 1 章 PC 的基本構造. 本章提要 PC 系統簡介 80x86 系列 CPU 及其暫存器群 記憶體: Memory 80x86 的分節式記憶體管理 80x86 的 I/O 結構 學習組合語言的基本工具.
VHDL語法(3).
McGraw-Hill/Irwin © 2003 The McGraw-Hill Companies, Inc.,All Rights Reserved. 肆 資料分析與表達.
遠端北風資料庫 公佈時間: 2006/4/26 繳交截止時間: 2006/5/10. 作業目的 實作遠端資料庫瀏覽程式.
Presentation transcript:

第 10 章 網頁資料庫的查詢 10-1 從資料表取得單一欄位值 10-2 DataReader 物件以表格顯示資料表 10-3 SQL 的資料庫查詢指令 10-4 DataSet 物件的資料庫查詢 10-5 DataSet 物件的資料篩選 10-6 DataSet 物件與 XML

10-1 從資料表取得單一欄位值 ADO.NET 的 Command 物件提供三種 Execute 方 法,在第九章說明的是 ExecuteNonQuery 方法, 這一節我們先來看看 ExecuteScalar 方法,這個 方法可以取得資料表指定記錄的單一欄位值, 如下所示: msg.Text = objCmd.ExecuteScalar() 上述程式碼執行 Command 物件 objCmd 的 SQL 指 令,如果傳回的值不只一個,例如:多筆記錄, 取得的是第一筆記錄的第一個欄位。

10-2 DataReader 物件以表格顯 示資料表 取得資料表資訊 顯示資料表的所有記錄 分頁顯示資料表的記錄

取得資料表資訊 - 取得 資料表本身的資訊,例如:欄位名稱、資料型 態和欄位尺寸。 首先使用 ExecuteReader 方法取得 DataReader 物 件,如下所示: objDataReader = objCmd.ExecuteReader() 上述程式碼取得 ObjDataReader 物件後,使用 GetSchemaTable 方法取得資料表資訊的 DataTable 物件,如下所示: Dim schemaTable As DataTable = objDataReader.GetSchemaTable()

取得資料表資訊 - 顯示 接著使用迴路顯示資料表的資訊,也就是每一 個 DataRow 物件,如下所示: Dim dataRow As DataRow For i = 0 To schemaTable.Rows.Count - 1 Response.Write(" ") dataRow = schemaTable.Rows(i) Response.Write(" " & dataRow("ColumnOrdinal") & " ") Response.Write(" " & dataRow("ColumnName") & " ") Response.Write(" " & dataRow("DataType").ToString() & " ") Response.Write(" " & dataRow("ColumnSize") & " ") Response.Write(" ") Next

顯示資料表的所有記錄 DataReader 物件如同檔案串流一般的讀取資料 表記錄,它只能讀取,不能插入、刪除和更新 記錄資料,其步驟如下所示: – 第一步:建立 Connection 物件 – 第二步:建立 Command 物件 – 第三步:執行 SQL 指令查詢資料表 – 第四步:取出查詢結果的資料表記錄資料 – 第五步:關閉 DataReader 和資料庫連結

分頁顯示資料表的記錄 DataReader 也一樣可以分頁顯示資料表的記錄, 只是實作上必須使用 Command 物件執行兩次 SQL 指令,第一次計算記錄總數,如下所示: objCmd = New OleDbCommand() objCmd.CommandText = "SELECT Count(*) FROM Users" objCmd.Connection = objCon objDataReader = objCmd.ExecuteReader() objDataReader.Read() intMaxRec = objDataReader.GetValue(0) 第二次使用 Command 物件執行 SQL 指令取得資 料表記錄的 DataReader 物件。

10-3 SQL 的資料庫查詢指令 SQL 的查詢指令 FROM 指定資料表 WHERE 子句的條件語法 排序輸出 SQL 的聚合函數

SQL 的查詢指令 - 基本語 法 SQL 的查詢指令只有一個 SELECT ,其基本語 法如下所示: SELECT column1, column2 FROM table WHERE conditions 上述指令 column1~2 是取得記錄的欄位, table 為資料表, conditions 是查詢條件,這個指令以 口語來說是「從資料表 table 取回符合 WHERE 條件所有記錄的欄位 column1 和 column2 」。

SQL 的查詢指令 - "*" 記 錄欄位 SELECT 指令的欄位 column1~2 是指定資料表取 回的欄位名稱,如果需要取得整個記錄的欄位, 可以使用「 * 」符號,表示資料表記錄的所有 欄位名稱,以本節的範例資料庫為例,其指令 如下所示: SELECT * FROM Products 上述指令並沒有指定 WHERE 過濾條件,執行 結果是取回資料表的所有記錄和欄位。

FROM 指定資料表 SELECT 指令的 FROM 是指定使用的資料 表,因為資料庫檔案可能擁有超過一個 資料表,在資料庫查詢時必須使用 FROM 指定查詢的資料表,如下所示 SELECT * FROM Products SELECT * FROM Users

WHERE 子句的條件語法 - 單一查詢條件 -1 如果 SQL 查詢是單一條件, WHERE 子句條件的基本規 則和範例,如下所示: – 文字欄位需要加上單引號,例如:圖書編號 ProductNo 為 F8915 ,此時的 SQL 指令字串,如下所 示: SELECT * FROM Products WHERE ProductNo='F8915' – 數字欄位不需要單引號括起,例如:圖書價格 ProductPrice 為 480 元,此時的 SQL 指令,如下所示: SELECT * FROM Products WHERE ProductPrice=480

WHERE 子句的條件語法 - 單一查詢條件 -2 – 文字和備註欄位可以使用【 LIKE 】包含運算子,這 個運算子是子字串,只需包含此字串即符合條件, 再配合「 % 」或「 _ 」的萬用字元,可以代表任何字 串或單一字元,,例如:圖書編號內包含有 "8" 的子 字串, SQL 指令如下所示: SELECT * FROM Products WHERE ProductNo LIKE '%8%' – 數字欄位可以使用 <> 、 > 、 = 和 <= 不等於、大 於、小於、大於等於和小於等於等運算子建立查詢 條件,例如:圖書價格大於 550 元,如下所示: SELECT * FROM Products WHERE ProductPrice > 550

WHERE 子句的條件語法 - 多重查詢條件 -1 如果 WHERE 的條件不只一個,可以使用邏輯 運算子 AND 和 OR 連接,其基本的規則,如下: –AND 且運算子:連接的前後條件都必須同時成立, 整個條件才成立,例如:圖書編號包含 "1" 且圖書名 稱有 "2002" 子字串,此時的 SQL 指令如下所示: SELECT * FROM Products WHERE ProductNo LIKE '%1%' AND ProductName LIKE '%2002%' –OR 或運算子:連接的前後條件只需任一條件成立即 可,例如:圖書編號包含 "6" 或圖書名稱有 "2002" 的 子字串,此時的 SQL 指令如下所示: SELECT * FROM Products WHERE ProductNo LIKE '%6%' OR ProductName LIKE '%2002%'

WHERE 子句的條件語法 - 多重查詢條件 -2 WHERE 子句允許連接兩個以上的條件,三、 四個或以上都可以,而且 AND 和 OR 也可以在 同一個 WHERE 子句使用,例如:下列的 SQL 指令,如下所示: SELECT * FROM Products WHERE ProductName LIKE '%2002%' OR ProductNo LIKE '%6%' AND ProductPrice >=500 SELECT * FROM Products WHERE (ProductName LIKE '%2002%' OR ProductNo LIKE '%6%') AND ProductPrice >=500

排序輸出 SQL 查詢的結果如果需要排序,可以使用指定 的欄位進行由小到大,或由大到小的排序,只 需在 SELECT 查詢指令的最後加上 ORDER BY 子句即可,如下所示: SELECT * FROM Products WHERE ProductPrice>500 ORDER BY ProductPrice 上述執行結果是使用圖書價格 ProductPrice 欄位 排序,預設由小到大,即 ASC ,如果想倒過來 由大到小,只需加上 DESC 指令,如下所示: SELECT * FROM Products WHERE ProductPrice>500 ORDER BY ProductPrice DESC

SQL 的聚合函數

10-4 DataSet 物件以表格顯示資 料表 顯示 DataSet 物件的所有記 錄 分頁顯示 DataTable 的記錄 使用程式碼建立 DataTable 物件的資料表

10-4 DataSet 物件以表格顯示資 料表

顯示 DataSet 物件的所有 記錄 在使用 DataAdapter 物件將資料表記錄填 入 DataSet 後,我們就可以使用 For Each 迴 路從 DataRowCollection 物件集合,取出 每一個 DataRow 物件,如下所示: For Each objDataRow in objDataSet.Tables("Users").Rows Response.Write(" ") Response.Write(" " & objDataRow("name") & " ") Response.Write(" " & objDataRow("birthday") & " ") Response.Write(" " & objDataRow("salary") & " ") …………………… Next

分頁顯示 DataTable 的記 錄 - 欄位名稱 DataSet 物件是儲存在記憶體的資料庫,可以直 接取得記錄數,以便建立分頁顯示,如下所示: intMaxRec = objDataSet.Tables("Users").Rows.Count DataColumnCollection 物件集合顯示資料表的欄 位名稱,如下所示: Dim objColumn As DataColumn For Each objColumn in objDataSet.Tables("Users").Columns Response.Write(" " & objColumn.ColumnName & " ") Next

分頁顯示 DataTable 的記 錄 - 記錄資料 然後使用 Count 屬性取得欄位數,如下所示: intFCount = objDataSet.Tables("Users").Columns.Count 最後使用 Do Loop 迴路以分頁顯示資料表記錄,如下: Dim objRow As DataRow intJ = intStartRec Do objRow = objDataSet.Tables("Users").Rows(intJ - 1) ………………… For intI = 0 To intFCount - 1 If objRow.IsNull(intI) = False Then Response.Write(" " & objRow(intI) & " ") Else Response.Write(" --- ") End If Next ……………………… intJ = intJ + 1 Loop Until intJ > intStopRec

使用程式碼建立 DataTable 物件的資料表 DataSet 物件架構是由 DataTable 物件組成, 每一個 DataTable 是以 DataRow 物件組成。 事實上,就算沒有任何資料來源或資料 庫連結, ASP.NET 程式碼也可以建立所 需的 DataSet 和 DataTable 物件,將它視為 儲存在記憶體中的資料表,例如:儲存 網路商店的購物車資料。

10-5 DataSet 物件的資料篩選 DataTable 物件 Select 方法的篩選 DataView 物件的篩選 DataTable 的關聯

DataTable 物件 Select 方法 的篩選 在 DataTable 物件提供 Select 方法,可以取得指 定過濾條件和排序欄位的 DataRow 物件陣列, 如下所示: selectRows = objDataSet.Tables("Users").Select("salary > 15000", _ "username DESC", DataViewRowState.CurrentRows) 在使用 Select 方法取得符合過濾條件的 DataRow 物件陣列後,可以使用 For Each 迴路取得個別 的 DataRow 物件,如下所示: For Each objRow In selectRows ………… Next

DataView 物件的篩選 -1 DataView 附屬於 DataTable 物件,它就是使用者 自訂 DataTable 物件的查詢結果,可以指定排序 方式、過濾條件、搜尋、編輯和瀏覽方式。 首先宣告 DataView 物件和代表每一筆記錄的 DataRowView 物件的變數,如下所示: Dim objDataView As DataView Dim objRow As DataRowView 然後使用 DefaultView 屬性取得 DataTable 預設的 DataView 物件,如下所示: objDataView = objDataSet.Tables("Users" ).DefaultView objDataView.RowFilter = "salary > 15000" objDataView.Sort = "username DESC"

DataView 物件的篩選 -2 在設定 DataView 的 RowFilter 和 Sort 屬性後, 可以取得過濾後的 DataView 物件,只需 使用 For Each 迴路就可以取出各 DataRowView 物件,如下所示: For Each objRow In objDataView ………… Next

DataTable 的關聯 如果 DataSet 物件包含多個 DataTable 物件,我們 可以在 DataTable 物件間建立關聯的 DataRelation 物件,然後使用關聯取出不同 DataTable 物件的記錄資料。 建立資料表間關聯的 DataRelation 物件, 如下所示: objRelation = New DataRelation("LevelName", _ objDataSet.Tables("Levels").Columns("no"), _ objDataSet.Tables("Users").Columns("userLevel"))

10-6 DataSet 物件與 XML 將 DataSet 輸出成 XML 文件 讀入 XML 文件

將 DataSet 輸出成 XML 文 件 DataSet 物件輸出成 XML 文件只需使用 WriteXML 方法,如下所示: Dim sw As StreamWriter = New StreamWriter(Server.MapPath(xmlFile)) objDataSet.WriteXML(sw) 上述程式碼在建立 StreamWriter 串流物件後, 使用 DataSet 物件的 WriteXML 方法輸出成 XML 文件檔案,其參數是 StreamWriter 物件。

讀入 XML 文件 DataSet 的資料來源也可以是 XML 文件,只需 使用 DataSet 物件的 ReadXML 方法就可以讀取 XML 文件的元素資料,如下所示: Dim sr As StreamReader = New StreamReader(Server.MapPath(xmlFile)) objDataSet.ReadXML(sr) 上述程式碼在建立 StreamReader 串流物件後, 使用 DataSet 物件的 ReadXML 方法讀取 XML 文件檔案,其參數是 StreamReader 物件。