Microsoft PowerPoint - ASP_NET_08

Similar documents
untitled

2 ADO.NET Internet 1.2

投影片 1

untitled

untitled

導讀 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# 程式

untitled

IsPostBack 2

第 一 章 資料庫概念

(Microsoft PowerPoint -

<463A5CC2A4B6ABD1A7D4BA5CBDCCD1A7D6B8C4CFD7DC5CA1B C B3CCD0F2C9E8BCC6A1B7BFCEB3CCD6B8C4CF2E646F63>

untitled

Microsoft PowerPoint - vb13.ppt

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

Microsoft PowerPoint - VB14.ppt

Chapter 16 集合

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

教案模板4-2

附件3:

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

Microsoft PowerPoint - course10.ppt

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

使用手冊

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

Microsoft PowerPoint - asp14

Microsoft PowerPoint - ASP_NET_09

基于UML建模的管理管理信息系统项目案例导航——VB篇

目錄

ADO.NET 資料庫存取架構

Chapter 00 導論

untitled

VB控件教程大全

第七章

Web Form 表單與事件處理

R D B M S O R D B M S R D B M S / O R D B M S R D B M S O R D B M S 4 O R D B M S R D B M 3. ORACLE Server O R A C L E U N I X Windows NT w w

Spyder Anaconda Spyder Python Spyder Python Spyder Spyder Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Sp

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

Advanced ASP.NET Controls

多層次傳銷與獎金系統

幻灯片 1

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

Flexsim: (Open DataBase Connectivity, ODBC)

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

untitled

(Microsoft PowerPoint - PHP_Ch10 [\254\333\256e\274\322\246\241])

12-1. 資料庫基礎觀念 (1). 使用 Access 建立資料庫及資料表 : (2)..NET 2005 讀取資料庫的部分, 雖然工具箱的控制項與.NET 2003 稍有不同, 但是核心程式碼, 還是維持與.NET 2003 相同的架構 (3). 但是.NET 2005 的 web 程式 (As

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

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

第一章 章标题-F2 上空24,下空24

PowerPoint Presentation

穨ac3-4.PDF

臺銀人壽「98年九至十一職等人員甄試」

Microsoft Word - ASP2DB1002.doc

mv t ï Catch ex As Exception MessageBox.Show(" «t ï ") Finally ' myconnection.close() End Try SqlConnection(ByVal connectionstring As String) pâ nç á

untitled

Microsoft Word - 4.doc

(Microsoft PowerPoint - PHP_Ch11 [\254\333\256e\274\322\246\241])

信息

投影片 1

Excel VBA Excel Visual Basic for Application

Microsoft Office SharePoint Server MOSS Web SharePoint Web SharePoint 22 Web SharePoint Web Web SharePoint Web Web f Lists.asmx Web Web CAML f

第6章  数据库技术基础

untitled

Microsoft Word - 關聯性資料庫.doc

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

职 位 类 别 : 测 试 工 程 师 工 作 经 验 或 实 习 经 历 : 不 限 岗 位 要 求 : 1. 本 科 及 其 以 上 学 历, 计 算 机 相 关 专 业 2014 届 毕 业 生 ; 2. 实 习 时 间 要 求, 尽 量 一 周 五 个 工 作 日 ; 3. 熟 悉 Wind

0SQL SQL SQL SQL SQL 3 SQL DBMS Oracle DBMS DBMS DBMS DBMS RDBMS R DBMS 2 DBMS RDBMS R SQL SQL SQL SQL SELECT au_fname,au_ lname FROM authors ORDER BY

大綱 資料庫系統 Database System 1. 資料庫及 SQL 導論 2. 網頁資料庫 3. 雲端建站 結合資料庫及雲端的網頁設計 1 資料庫簡介 甚麼是資料庫? 資料庫 (Database) 為相關資料的集合 關聯式資料庫 (Relational Database) 為以關聯表格 (Re

epub 61-2

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

摘 要 在 這 忙 碌 的 社 會 中, 普 遍 人 們 運 動 時 間 其 實 並 不 充 裕, 體 力 越 來 越 差 的 情 況 下 還 隨 意 飲 食 導 致 身 體 健 康 越 來 越 差, 因 此 本 專 題 打 算 利 用 健 康 飲 食 的 方 式 改 善 這 些 人 的 體 質,

untitled

PPBSalesDB.doc

TopTest_Adminstrator.doc

RUN_PC連載_12_.doc

HTML網頁基礎語言

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

Mechanical Science and Technology for Aerospace Engineering October Vol No. 10 Web SaaS B /S Web2. 0 Web2. 0 TP315 A

(DMO) 1 1 Microsoft Windows SQL Server 2005 SQL Server Analysis ServicesNotification Services SQL Server 8 SQL Server IP SQL Server 2005 SQL Server 20

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

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

软 件 工 程 专 业 习 指 南 目 录 一 软 件 工 程 专 业 设 置 背 景 与 发 展 前 景... 3 二 软 件 工 程 专 业 实 践 教 条 件... 4 三 软 件 工 程 专 业 课 程 类 型 及 核 方 式 软 件 工 程 专 业 课 程 类 型...7

Chapter 1: Introduction

声 明 本 公 司 及 全 体 董 事 监 事 高 级 管 理 人 员 承 诺 不 存 在 任 何 虚 假 记 载 误 导 性 陈 述 或 重 大 遗 漏, 并 对 其 真 实 性 准 确 性 完 整 性 承 担 个 别 和 连 带 的 法 律 责 任 本 公 司 负 责 人 和 主 管 会 计 工

目錄 C ontents Chapter MTA Chapter Chapter

untitled

ASP.NET 2.0網頁設計範例教本

投稿類別:資訊類

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

投影片 1

Microsoft PowerPoint - SAGE 2010

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

untitled

數位教學平台介面操作

untitled

MVB-1001.DOC

untitled

超連結 03 URI (Universal Resource Identifier) URI Web URL (Universal Resource Locator) URI URI :// [: ]/ [/ 2...]/

ThreeDtunnel.doc

产品手册: CA GEN r8

Transcription:

第 8 章 ADO.NET 元件與資料繫結

大綱 資料庫的基礎 ASP.NET 網頁資料庫 ADO.NET 的 DataReader 物件 ADO.NET 的 DataSet 物件 資料繫結的基礎 SqlDataSource 資料來源控制項 2

資料庫的基礎 資料庫系統 關聯式資料庫 3

資料庫系統 我們所泛稱的資料庫只是資料庫系統 (Database System) 的一部分, 資料庫系統是由資料庫 (Database) 和資料庫管理系統 (Database Management System,DBMS) 所組成, 如右圖所示 : 4

關聯式資料庫 關聯式資料庫 (Relational Database) 是由一個或多個資料表所組成, 在多個資料表間使用欄位的資料值來建立連接, 以便實作資料表間的關聯性 在關聯式資料庫是使用二維表格的資料表來儲存記錄資料, 在各資料表間使用欄位值建立關聯性, 透過關聯性來存取其他資料表的資料, 如右圖所示 : 5

關聯式資料庫組成 關聯式資料庫是使用資料表 (Tables) 的二維表格來儲存資料, 每一個資料表使用欄位 (Fields) 分類成很多群組, 每一個群組是一筆記錄 (Records), 例如 : 通訊錄資料表, 如下表所示 : 6

ASP.NET 網頁資料庫 ASP.NET 與資料庫 ADO.NET 的基礎 ASP.NET 的資料控制項 將資料庫加入 ASP.NET 網站 7

ASP.NET 與資料庫 ASP.NET 技術的 Web 應用程式就是一種資料驅動 Web 應用程式 (Data-driven Web Applications), 網頁實際內容是分開儲存成外部資料, 當存取時才動態整合出最新的內容 資料庫就是 Web 應用程式最常使用的外部資料來源, 大部分 ASP.NET 建立的資料驅動 Web 應用程式, 就是一種資料庫驅動 Web 應用程式 (Database-driven Web Application), 也稱為網頁資料庫 (Web Database) 8

ASP.NET 與資料庫圖例 網頁資料庫就是一種結合前端 HTML 文件或 Web Form 表單的使用介面, 配合後端 Web 伺服器和資料庫系統的一種應用程式架構, 如下圖所示 : 9

ADO.NET 的基礎 ADO.NET 是微軟的資料存取技術, 其主要目的是在.NET Framework 平台存取資料, ADO.NET 可以提供一致的物件模型來存取和編輯資料來源的資料 換句話說, 它就是提供一致的資料處理方式, 至於資料來源並不限資料庫, 幾乎任何資料來源都可以 10

ADO.NET 物件模型 ADO.NET 的主要類別物件有 :Connection Command DataReader 和 DataSet, 其物件模型如下圖所示 : 11

ADO.NET 物件 物件 Connection Command DataReader 說明建立與資料來源間的連接對資料來源執行指令, 以資料庫來說, 就是執行 SQL 指令敘述針對資料來源使用 Command 物件執行指令, 可以取得唯讀 (Read-Only) 和只能向前 (Forward-Only) 的串流資料, 每一次只能從資料來源讀取一列資料 ( 即一筆 ) 儲存到記憶體, 所以執行效率非常的高 DataSet 和 DataTable DataSet 物件是由 DataTable 物件組成的集合物件, DataSet 物件代表儲存在記憶體的資料庫, 每一個 DataTable 儲存一個資料表的記錄資料, 而且可以設定資料表間的關聯性 (Relationship) DataAdapter DataSet 和 Connection 物件資料連接間的橋樑, 可以將 記錄資料填入 DataSet 物件 12

命名空間 ADO.NET 類別分屬數個命名空間, 可以用來存取資料庫的資料 換句話說,ASP.NET 網頁需要匯入指定的命名空間, 才能使用 ADO.NET 類別來存取資料庫 主要的命名空間說明, 如下表所示 : 名稱空間 System.Data 說明 提供 DataSet DataTable DataRow DataColumn 和 DataRelation 類別, 可以將資料庫的記錄資料儲存到記憶體 System.Data.OleDb OLE DB 的.NET 提供者, 提供 OleDbCommand OleDbConnection OleDbDataReader 類別來處理 OLE DB 資料來源的資料庫 System.Data.SqlClient SQL 的.NET 提供者, 提供 SqlCommand SqlConnection SqlDataReader 類別來處理微軟 Microsoft SQL Server 7.0 13 以上版本的資料庫

ASP.NET 的資料控制項 在 ASP.NET 1.0/1.1 版存取資料庫需要使用 ADO.NET 元件, 以程式碼連接 開啟 操作和顯示資料表的記錄資料 從 ASP.NET 2.0 版開始, 我們可以直接使用資料控制項 (Data Controls) 建立網頁資料庫, 而不用撰寫任一行程式碼 資料控制項依其功能可以分為 : 資料來源控制項 資料邊界控制項 14

資料來源控制項 資料來源控制項 (DataSource Controls) 可以使用宣告方式來存取資料來源的資料 例如 : 宣告資料來源是 SQL Server 資料庫和指定相關屬性後, 就可以存取資料庫的記錄資料 事實上, 在資料來源控制項的背後就是 ADO.NET 元件的 DataSet DataReader Connection 和 Command 物件,ASP.NET 只是改為宣告的控制項標籤, 所以, 我們不用撰寫任何一行程式碼, 只需指定相關屬性值, 就可以輕鬆存取資料來源的資料 15

資料來源控制項種類 資料來源控制項 SqlDataSource AccessDataSource XmlDataSource SiteMapDataSource ObjectDataSource LinqDataSource 說明存取關聯式資料庫的資料來源 可以是 SQL Server, Access 和 Oracle 等, 如果使用 SQL Server, 控制項自動使用 SqlClient 類別來最佳化資料庫存取存取微軟 Access 資料庫, 屬於 SqlDataSource 控制項的特別版本存取 XML 文件的資料來源, 請參閱第 12 章建立網站地圖的唯讀資料來源, 請參閱第 12 章存取類別物件的資料來源, 可以在多層架構存取中間層的資料來源, 請參閱第 16 章使用 LINQ(Language-Integrated Query) 從資料物件存取和修改資料, 請參閱第 16 章 EntityDataSource 存取實體資料模型 (EDM) 的資料來源, 請參閱第 16 章 16

資料邊界控制項 資料邊界控制項 (DataBound Controls) 也稱為資料顯示與維護控制項, 它是使用者和資料來源間的橋樑, 可以將資料來源取得的資料呈現給使用者檢視或編輯 簡單的說, 這是一種現成的資料顯示和維護介面, 可以將資料來源的資料編排成瀏覽程式顯示的網頁內容 換句話說, 透過資料邊界控制項, 我們就不用自行撰寫 HTML 標籤 程式碼或建立控制項來編排資料來源取得的資料, 現在只需新增資料邊界控制項且指定相關屬性, 就可以快速建立漂亮的資料編排效果, 而且支援資料編輯功能, 可以新增 更新和刪除資料來源的資料 17

資料邊界控制項種類 表格顯示的控制項 : 這類控制項可以建立傳統 HTML 表格的顯示外觀, 讓我們以一列一筆記錄的方式來顯示資料表的記錄資料, 而且提供有分頁功能, 例如 :GridView DataList 和 ListView 控制項 單筆顯示的控制項 : 此類控制項可以顯示單筆記錄, 如同一疊卡片, 在每張卡片上顯示一筆記錄, 並且提供巡覽功能可以顯示指定卡片, 或前一張 後一張卡片的記錄資料, 例如 :DetailsView 和 FormView 控制項 選擇功能的控制項 : 即清單控制項的 DropDownList 和 ListBox 控制項, 它們不只支援簡單資料繫結, 也支援從資料來源控制項取得項目資料 樹狀結構的控制項 : 這類控制項是用來顯示階層架構的資料, 特別針對 XML 文件的資料來源, 例如 :TreeView 和 Menu 控制項 18

本機與伺服器資料庫 對於 ASP.NET 網站使用的資料庫來說,SQL Server 2008 Express 版可以建立兩種資料庫, 其說明如下所示 : 伺服器資料庫 (Server Database): 伺服器資料庫是屬於伺服器, 所以, 在伺服器上執行的應用程式都可以存取此資料庫 不過,VWD 並不能建立伺服器資料庫, 我們只能自行安裝和使用 SQL Server Management Studio Express 管理工具來建立 本機資料庫 (Local Database): 本機資料庫是屬於 ASP.NET 網站的資料庫, 它是建立在名為 \App_Data 子資料夾的資料庫 在本書的 ASP.NET 網站都是使用本機資料庫來建立網頁資料庫 19

加入資料庫 我們可以在 VWD 開啟 ASP.NET 網站後, 直接將資料庫加入 ASP.NET 網站 例如 : 將 SQL Server 資料庫 School.mdf, 加入 ASP.NET 網站的 App_Data 資料夾, 如下圖所示 : 選加入的資料庫 20

ADO.NET 的 DataReader 物件 開啟 DataReader 物件 Command 物件的 Execute() 方法 21

ADO.NET 的 DataReader 物件 在 ASP.NET 程式碼可以使用 ADO.NET 元件的 DataReader 或 DataSet 物件取得記錄資料 因為本書在第 9 章才會詳細說明 SQL 查詢指令, 所以, 本章範例都是使用同一個 SQL 查詢指令, 如下所示 : SELECT * FROM Students 上述 SQL 指令 SELECT 沒有 WHERE 子句的任何條件, 查詢結果可以取得資料表 Students 的所有記錄和欄位資料 22

匯入命名空間 DataReader 物件是使用類似檔案串流來讀取記錄資料, 它只能讀取, 不能插入 刪除和更新記錄資料 在 ASP.NET 網頁首先需要匯入命名空間,SQL Server 與 SQL Server Express 匯入的命名空間, 如下所示 : <%@ Import Namespace="System.Data" %> <%@ Import NameSpace="System.Data.SqlClient" %> 在匯入命名空間後, 就可以使用 ADO.NET 物件來存取資料庫的記錄資料 23

建立 Connection 物件 在 ASP.NET 網頁建立 Connection 物件, 如下所示 : strdbcon = "Data Source=.\SQLEXPRESS;" & "AttachDbFilename=" & Server.MapPath("App_Data\School.mdf") & ";Integrated Security=True;" & "TrustServerCertificate=False;" & "User Instance=True;Context Connection=False" Dim objcon As SqlConnection objcon = New SqlConnection(strDbCon) strdbcon 變數值是 SQL Server 2008 Express 的連接字串 24

開啟資料庫連接 在建立 Connection 物件後, 就可以使用 Open() 方法開啟資料庫連接, 如下所示 ; objcon.open() 上述程式碼使用名為 objcon 的 Connection 物件開啟資料庫連接 25

建立 Command 物件 在建立和開啟 Connection 物件後, 就可以使用 SQL 指令和 Connection 物件作為參數來建立 Command 物件, 如下所示 : strsql = "SELECT * FROM Students" objcmd = New SqlCommand(strSQL, objcon) 程式碼使用 New 運算子和建構子來建立 Command 物件, 第 2 個參數是開啟的資料庫連接物件, 表示向此資料來源執行第 1 個參數的 SQL 指令敘述 26

執行 SQL 指令敘述查詢資料表 接著使用 Command 物件的 ExecuteReader() 方法執行 SQL 查詢指令, 如下所示 : objdr = objcmd.executereader() 上述程式碼取得 DataReader 物件 objdr, 讀者可以想像它是開啟一個資料庫的檔案串流 27

讀取記錄資料 DataReader 物件是一種資料串流, 在 ASP.NET 網頁可以使用 objdr.hasrows 屬性判斷是否有記錄資料, 如果有就為 True, 然後可以使用 Do While 迴圈讀取資料表的記錄資料, 如下所示 : Do While objdr.read() lbloutput.text &= objdr("sid") & " - " lbloutput.text &= objdr("name") & " - " lbloutput.text &= objdr("tel") & "<br/>" Loop 28

關閉 DataReader 和資料庫連接 在完成後就可以關閉 DataReader 串流物件和資料庫連接, 如下所示 : objdr.close() objcon.close() 上述程式碼使用 Close() 方法關閉 DataReader 和 Connection 物件 29

指令種類 在 ADO.NET 元件的 Command 物件提供三種 Execute() 方法來執行 SQL 指令敘述, 如下表所示 : Execute() 方法說明 ExecuteNonQuery() 執行 SQL 指令但不傳回任何資料, 通常是執行資料庫操作指令 INSERT DELETE 和 UPDATE ExecuteScalar() ExecuteReader() 執行 SQL 指令從資料表取得 1 個欄位資料, 如果是資料表, 就是第 1 筆記錄的第 1 個欄位值 執行 SQL 指令傳回 DataReader 物件 30

ExecuteScalar() 方法 ExecuteScalar() 方法可以取得資料表指定記錄的單一欄位值, 如下所示 : lbloutput.text = " 查詢結果 : " & objcmd.executescalar() 上述程式碼執行 Command 物件 objcmd 的 SQL 指令, 如果傳回值不只一個 例如 :SQL 指令如果是查詢多筆記錄, 取得的是第 1 筆記錄的第 1 個欄位 31

ExecuteScalar() 方法 在 ASP.NET 網頁使用 Command 物件的 ExecuteScalar() 方法執行 SQL 指令敘述, 在 TextBox 控制項輸入 SQL 指令, 按 查詢單一欄位值 鈕可以取得單一欄位值, 如下圖所示 : 32

ADO.NET 的 DataSet 物件 DataSet 物件的基礎 將記錄填入 DataSet 物件 33

DataSet 物件的基礎 DataSet 物件是由 DataTable 物件所組成, DataSet 物件相當於是資料庫,DataTable 物件就是資料表 DataTable 物件是以表格來儲存資料表的記錄資料, 可以使用列或欄來處理, 即使用 DataRowCollection 和 DataColumnCollection 集合物件 在集合物件的每一個 DataRow 物件是一列, 也就是一筆記錄, 每一個 DataColumn 物件是一欄 34

DataSet 物件的基礎圖 35

建立與開啟 Connection 物件 首先使用 Connection 物件建立資料連接物件 objcon 後, 使用 Open() 方法開啟資料來源, 如下所示 : objcon = New SqlConnection(strDbCon) objcon.open() 36

建立 DataAdapter 物件 DataSet 物件是使用 DataAdapter 物件來取得記錄資料, 此物件是 DataSet 與 Connection 物件資料來源間的橋樑, 可以呼叫方法將記錄資料填入 DataSet 物件, 如下所示 : strsql = "SELECT * FROM Students" objdataadapter = New SqlDataAdapter(strSQL, objcon) 37

建立 DataSet 物件填入記錄資料 接著建立 DataSet 物件, 將取得的記錄資料填入 DataSet 物件, 如下所示 : Dim objdataset As DataSet = New DataSet() objdataadapter.fill(objdataset, "Students") 38

顯示 DataTable 物件的所有記錄 使用別名取得指定的 DataTable 物件後, 以 For Each 迴圈取出 DataTable 物件 Rows 屬性的每一個 DataRow 物件, 也就是每一筆記錄, 如下所示 : Dim objrow As DataRow For Each objrow In objdataset.tables("students").rows Next lbloutput.text &= objrow("sid") & " - " lbloutput.text &= objrow("name") & " - " lbloutput.text &= objrow("tel") & " - " lbloutput.text &= objrow("birthday") & "<br/>" 39

關閉資料庫連接 最後使用 Close() 方法關閉資料庫連接, 此例的 Connection 物件為 objcon, 如下所示 : objcon.close() 40

資料繫結的基礎 資料繫結簡介 建立 ListBox 控制項的簡單資料繫結 41

資料繫結簡介 ASP.NET 控制項支援資料繫結技術, 能夠將不同資料來源的集合物件 陣列 DataReader 或 DataView ( 可以視為從 DataSet 物件建立的檢視表 ) 等資料整合到 ASP.NET 控制項 換句話說, 資料來源的資料會自動填入控制項, 並且使用預設方式顯示資料, 當然, 我們可以設定控制項屬性來變更其顯示外觀 在 ASP.NET 使用的資料繫結技術分為兩種 : 簡單資料繫結和宣告式的資料繫結 42

簡單資料繫結 在 ASP.NET 網頁使用簡單資料繫結 (Simple Databinding) 的控制項擁有 DataSource 屬性, 可以使用實作 IEnumerable 介面的集合物件作為資料來源, 然後呼叫 DataBind() 方法來建立資料繫結 例如 : 清單控制項的 ListBox RadioButtonList CheckBoxList 和 DropDownList 等都支援簡單資料繫結 43

宣告式的資料繫結 宣告式的資料繫結 (Declarative Databinding) 是一種比較複雜的資料繫結, 它是使用控制項的 DataSourceID 屬性來建立資料繫結 在 ASP.NET 網頁需要先建立 資料來源控制項 (DataSource Controls) 存取資料來源的資料, 然後建立 資料邊界控制項 (DataBound Controls) 來顯示和維護資料來源的資料 44

建立 ListBox 控制項的簡單資料繫結 簡單資料繫結可以使用集合物件作為資料來源, 其最常的應用是建立 List 清單控制項的項目 換句話說, 我們可以使用資料繫結技術來動態顯示清單的項目 45

建立 ListBox 控制項的簡單資料繫結 首先建立 ArrayList 物件作為資料來源, 如下所示 : Dim names As ArrayList = New ArrayList() names.add(" 陳會安 ") names.add(" 江小魚 ") names.add(" 張無忌 ") names.add(" 陳允傑 ") 接著指定 ListBox 控制項的 DataSource 屬性, 如下所示 : lstnames.datasource = names lstnames.databind() 46

SqlDataSource 資料來源控制項 建立 SqlDataSource 控制項 資料來源控制項的標籤內容 傳回沒有重複的欄位值 47

建立 SqlDataSource 控制項 在 VWD 建立 SqlDataSource 控制項, 請開啟 工具箱 視窗且展開 資料 區段, 只需選取 SqlDataSource 控制項, 拖拉至 Web Form 表單的編輯區域, 就可以建立 SqlDataSource 控制項 SqlDataSource 控制項 48

新增 SqlDataSource 控制項 步驟一 : 新增 SqlDataSource 控制項 在 VWD 的 工具箱 視窗提供資料來源控制項, 我們可以在 設計 標籤直接拖拉來新增資料來源控制項, 如下圖所示 : 49

設定資料來源 選資料來源控制項, 開啟 SqlDataSource 工作 功能表, 選 設定資料來源 超連結, 可以看到設定資料來源的精靈畫面 選 School.mdf 資料連接 建立 SQL 指令 測試 SQL 指令 將連接字串儲存在組態檔 50

選擇控制項使用的資料來源控制項 步驟二 : 選擇控制項使用的資料來源控制項 在新增資料來源控制項和設定好資料來源後, 我們就可以在 ListBox 控制項選擇使用的資料來源, 如下圖所示 : 在 選取資料來源 欄選 SqlDataSource1,ListBox 控制項顯示 name 欄位, 選取欄位值是 sid 欄位 51

新增事件處理程序來顯示使用者的選擇 步驟三 : 新增事件處理程序來顯示使用者的選擇 在新增 ListBox 控制項後, 我們就可以建立 Button1 控制項的事件處理程序, 如下所示 : Protected Sub Button1_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) If lstnames.selectedindex > -1 Then lbloutput.text = " 選擇的學號 : " & lstnames.selecteditem.value End If End Sub 52

SqlDataSource 控制項標籤內容 SqlDataSource 控制項標籤, 如下所示 : <asp:sqldatasource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand="SELECT * FROM [Students]"> </asp:sqldatasource> 53

SqlDataSource 控制項標籤屬性說明 ProviderName 屬性值是定義在 web.config 組態檔的參數, 如下所示 : <%$ ConnectionStrings:ConnectionString %> 參數名稱分成兩部分, 前面 ConnectionStrings 指明取得在 web.config 檔案同名標籤定義的參數值, 後面是 ConnectionString 參數名稱, 可以取得此參數名稱的資料庫連接字串 屬性 ProviderName ConnectionString SelectCommand 說明 提供者名稱是 System.Data.OleDb 或 System.Data.SqlClient( 預設值 ) 資料庫連接字串 SQL 的 SELECT 查詢指令 54

web.config 組態檔 在 web.config 組態檔的 <connectionstrings> 標籤定義連接字串的參數名稱和值, 如下所示 : <connectionstrings> <add name="connectionstring" connectionstring="data Source=.\SQLEXPRESS;AttachDbFilename= DataD irectory \School.mdf;Integrated Security=True;User Instance=True" providername="system.data.sqlclient" /> </connectionstrings> 55

傳回沒有重複的欄位值 當我們使用資料繫結將資料庫欄位填入 DropDownList 控制項時, 可能會遇到重複值欄位的問題, 如下圖所示 : 56

傳回沒有重複的欄位值 選資料來源控制項, 在 SqlDataSource 工作 功能表選 設定資料來源 超連結, 請重複按 下一步 鈕, 直到到達設定 SQL 陳述式的步驟 勾選 只傳回不重複的資料列 按 ORDER BY 鈕新增排序條件 57