1 / 158

Chapter 12

Chapter 12. T-SQL 語法與 ASP.NET. 本章提要. 12 - 1 T-SQL 語法基礎 12 - 2 資料來源控制項的查詢設定 12 - 3 查詢多個資料表 12 - 4 自訂資料來源的編輯與刪除功能. T-SQL 語法與 ASP.NET. 前一章我們介紹了如何使用資料繫結技術來瀏覽資料庫中的資料 , 本章將進一步說明如何結合 T-SQL 查詢語法時 , 讓網頁能依需要顯示特定的資料;以及更多的資料控制項設計技巧。. 12 - 1 T-SQL 語法基礎.

aoife
Download Presentation

Chapter 12

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chapter 12 T-SQL 語法與 ASP.NET

  2. 本章提要 • 12 - 1 T-SQL 語法基礎 • 12 - 2 資料來源控制項的查詢設定 • 12 - 3 查詢多個資料表 • 12 - 4 自訂資料來源的編輯與刪除功能

  3. T-SQL 語法與 ASP.NET • 前一章我們介紹了如何使用資料繫結技術來瀏覽資料庫中的資料, 本章將進一步說明如何結合 T-SQL 查詢語法時, 讓網頁能依需要顯示特定的資料;以及更多的資料控制項設計技巧。

  4. 12 - 1 T-SQL 語法基礎 • 在關聯式資料庫的世界中, 用來存取資料庫的語法是結構化查詢語言 SQL (Structured Query Language) 。 • 標準組織 ISO / ANSI 早已制定出 SQL 語言標準, 但各資料庫管理系統廠商在實作其產品所用的 SQL 語言時, 都是在各自的產品架構下, 設計出『儘量』符合 SQL 標準的自家語言, 因此各資料庫管理系統所支援的 SQL 語言都不太一樣, 例如微軟公司的 SQL Server 所使用的是 Transact-SQL (簡稱 T-SQL)。

  5. T-SQL 語法基礎 • 當我們用資料來源控制項連接資料庫時, 就會設定向資料庫取得所需資料的 T-SQL 語法, 只不過前一章介紹時都是以圖形介面撰擇所要查詢的資料表及欄位、由 VWD 自動替我們產生合適的 T-SQL 查詢敘述, 而網頁在執行時, 即是利用此查詢敘述向資料庫進行查詢, 資料庫則將查詢結果傳回。

  6. T-SQL 語法基礎

  7. T-SQL 語法基礎 • 除了單純查詢整個資料表的所有欄位或是部分欄位外, 我們也可只查詢符合特定條件的資料, 這些都可透過適當的 T-SQL 語法來達到, 像是同時擷取兩個資料表的內容, 並整合在一起...等。 • 雖然 VWD 提供了友善的工具幫助我們建立 T-SQL 查詢敘述的內容, 減少我們需動手自行輸入查詢敘述的必要。

  8. T-SQL 語法基礎 • 但 VWD 畢竟不是萬能, 有些特別的語法仍需手動輸入;再者有時候僅是要做小小的修改, 也不必動用到 VWD 的精靈, 因此若能熟悉 T-SQL 的基本語法, 對於設計資料庫相關的網頁時將會更有幫助。

  9. 學習 T-SQL 語法的練習網頁 • 為測試及練習稍後的 T-SQL 語法, 我們先建立一個練習專用的網頁。 • 這個網頁包含一個 SqlDataSource 控制項及 GridView 控制項, 但並不完全採用前一章的建立方式: • SqlDataSource 控制項:只設定連接字串, 但不設定查詢語法, 換言之其 SelectCommand 屬性是空白的 (您也可依前一章的方式設妥控制項後, 再將此屬性清空):

  10. 學習 T-SQL 語法的練習網頁

  11. 學習 T-SQL 語法的練習網頁 • GridView 控制項:雖設定繫結上述的 SqlDataSource 控制項, 但因資料來源控制項未設定查詢敘述, 即無法取得資料, 所以 GridView 控制像也無法取得細節的欄位資訊。

  12. 學習 T-SQL 語法的練習網頁

  13. 學習 T-SQL 語法的練習網頁 • 另外我們再加入一個用來輸入查詢敘述的 TextBox 欄位及 Button 按鈕:

  14. 學習 T-SQL 語法的練習網頁 • 按下按鈕時, 程式即會將輸入至 TextBox 的字串當成查詢敘述設定給 SqlDataSource 控制項的 SelectCommand 屬性, 讓查詢結果立即顯示出來:

  15. 學習 T-SQL 語法的練習網頁

  16. 學習 T-SQL 語法的練習網頁 • 在練習時可能會因輸入不合法的 T-SQL 敘述而引發例外, 所以我們特別將主要的程式放在 Try / Catch 結構中。 • 當控制項因 T-SQL 語法錯誤而引發例外時, 即會輸出相關錯誤內容:

  17. 學習 T-SQL 語法的練習網頁 • 第 16 行的程式將 GridView 設為隱藏, 只是為避免在發生例外時, 網頁上不會仍留有前一次練習所留下來的資料。

  18. SELECT 語法 • SQL 語言的查詢敘述為 SELECT (SQL 語言不分大小寫), 前面提過各廠商實作的自家 SQL 語法都不儘相同, 但在 SELECT 的部份倒是都差不多。 • 因為本章以使用 SQL Server 資料庫為主, 所以此處也以 T-SQL 語法為主, TSQL 的 SELECT 語法如下:

  19. SELECT 語法 • 這個最基本的語法其實在前一章範例已看過其用法, 資料表名稱就是來源資料庫中的資料表名稱, 通常為方便辨識, 會在名稱前後加上 [...] 方括號。 • 欄位名稱的部份就是直接列出要查詢的任何欄位名稱, 要查詢多個欄位名稱時, 其間需以逗號 (,) 分開, 而且也可加上方括號 (非必要):

  20. SELECT 語法

  21. SELECT 語法 • 若要查詢資料表中的所有欄位, 則可用 * 或 ALL 來 代表:

  22. SELECT 語法 • 此外, 欄位名稱前可加上『資料表名稱.』的語法, 明確表示此欄位是存於哪一個資料表: • 當然在本例中, 資料來源就只有 [書籍] 資料表, 因此這樣的寫法看起來是多餘的。但當我們在 SELECT 敘述中同時查詢多個資料表時, 這樣的寫法就能分清楚各欄位是出自哪一個資料表, 在本章稍後我們就會看到這樣的應用。

  23. 別名 • 指定欄位名稱可使用別名(Alias), 使用別名就是讓查詢所得的資料中, 欄位名稱換成別名顯示, 而非該欄位原本在資料表中的名稱。指定別名時的語法如下: • 例如下面的例子, 就是用別名讓欄位名稱都變成英文:

  24. 別名

  25. 別名 • SELECT 敘述也可一次查詢多個資料表, 以取得來自不同資料表的相關資料欄位, 在本章稍後會進一步說明此種用法。

  26. 自訂欄位 • 列在 SELECT 後面的欄位也可以是資料表中沒有的欄位, 我們可用『欄位名稱 = 運算式』的方式, 動態產生此自訂欄位的資料。 • 例如在 [書籍] 資料表中有個『單價』欄位, 而我們可將它乘上折數後產生折扣價的自訂欄位:

  27. 自訂欄位 • 執行結果如下:

  28. T-SQL 的函數 • T-SQL 和一般程式語言一樣, 內建了許多常用的資料處理、計算、統計函數 (Function), 這些函式都能應用在查詢敘述中, 以便對資料做進一步的處理, 再將結果傳回。 • 例如 COUNT() 是個統計資料共有幾筆的函數, 而以下的查詢敘述, 即可查詢『書籍』資料表中有幾本書籍:

  29. T-SQL 的函數 • 對各 T-SQL 函數的功能、用法有興趣者, 請參考 T-SQL 相關書籍。

  30. WHERE 子句 • 在基本的 SELECT 查詢後面可加上多種子句(Clause) 來限制查詢的範圍, 其中最常見的子句之一就是 WHERE 子句, 其功用是設定查詢的條件, 語法如下:

  31. WHERE 子句 • 條件的表示方式就和 Visual Basic 在 If、While 之類的敘述中所用的條件運算式相似, 可用各種比較運算子 (>、=、< 等, 後詳) 來限制查詢的條件。 • 例如要查詢『單價』為 299 元的書籍之名稱, 則條件即為『單價 = 299』, 所以查詢敘述可寫成:

  32. WHERE 子句

  33. 比較與邏輯運算子 • 使用 WHERE 子句時, 通常要運用 T-SQL 的比較與邏輯運算子來建立各種條件。T-SQL 的比較運算子有下列九種, 其用法很直覺, 就不個別說明:

  34. 比較與邏輯運算子 • T-SQL 的邏輯運算子則多達十種, 以下簡單介紹其中較常見的數種: • AND、OR、NOT • BETWEEN • LIKE

  35. AND、OR、NOT • 也就是『且』、『或』、『否』的意思, 利用這 3 個運算子, 可組合出複雜的條件, 例如:

  36. BETWEEN • 和字面的意思一樣, 用以設定某個範圍的條件, 兩個範圍值間要用 AND 連接, 例如:

  37. BETWEEN • 上例的 WHERE 條件也可寫成『單價 > = 200 AND 單價 < = 499』, 意思相同。

  38. LIKE • 可用以指定要查詢的欄位中所含的『部份』內容, 其語法為『LIKE '比對字串'』, 比對字串中可使用以下特殊字元: • %:代表零或多個任意字元, 例如 'SQL%' 即表示以 'SQL' 開頭的任何字串;而 '%SQL%' 則表示任何包含有 'SQL' (不論位置) 的字串。

  39. LIKE

  40. LIKE • _:代表一個任意字元, 例如 ‘S_ _ ’ 表示任何以 ‘S’ 開頭、長度為 3 個字 (開頭的 S 再加兩個任意字元) 的字串 (中英元字元都算一個字)。

  41. LIKE

  42. LIKE • [ ]:方括號中可放任何字元或範圍, 代表符合方括號所列的任何字元, 例如 ‘[ABC]%’ 表示任何以 A 或 B 或 C 開頭的字串。 方括號若加入 ^ 符號, 則表示相反的意思, 例如 '[^ABC]%' 表示任何不是以 A、B、C 開頭的字串。

  43. LIKE

  44. ORDER BY 子句 • ORDER BY 子句是用以設定傳回資料的排列順序, 雖然 GridView 可啟用排序功能, 讓瀏覽者可選擇排序方式, 但 DetailsView 和 FormView 則無此功能。 • 或者您想使用 GridView 顯示資料, 但只使用固定的排序方式, 此時都可用 ORDER BY 子句指定要依哪一個欄位排序, 而且還可用 ASC (升冪, 由小到大, 預設值) 或 DESC (降冪, 由大到小) 關鍵字指定排列方式:

  45. ORDER BY 子句

  46. ORDER BY 子句 • 在 ORDER BY 子句中可指定多個排列依據 (用逗號分隔), 表示當第 1 個排序條件所得的結果中有順序相同的記錄時, 可再依另一個條件排序:

  47. ORDER BY 子句

  48. 12 - 2 資料來源控制項的查詢設定 • SELECT 查詢語法的變化, 有部份是可直接在資料來源控制項的設定畫面中, 由 VWD 替我們自行產生, 但有時則需自行輸入。 • 以下我們先複習一下在資料來源控制項中的設定, 之後再介紹如何使用 VWD 提供的查詢產生器建立複雜的查詢敘述。

  49. 資料來源控制項的 ORDER BY 設定 • 在設定資料來源控制項的資料來源時, 即可選擇 ORDER BY 子句的資料排序方式。請先建立一個新的網頁 (Ch12-02.aspx), 在網頁中加入 SqlDataSource 控制項後依如下方式設定:

  50. 資料來源控制項的 ORDER BY 設定

More Related