8 ado net n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
第 8 章 ADO.NET元件與資料繫結 PowerPoint Presentation
Download Presentation
第 8 章 ADO.NET元件與資料繫結

Loading in 2 Seconds...

play fullscreen
1 / 64

第 8 章 ADO.NET元件與資料繫結 - PowerPoint PPT Presentation


  • 118 Views
  • Uploaded on

第 8 章 ADO.NET元件與資料繫結. 第 8 章 ADO.NET元件與資料繫結. 8-1 資料庫的基礎 8-2 ASP.NET 網頁資料庫 8-3 ADO.NET 的 DataReader 物件 8-4 ADO.NET 的 DataSet 物件 8-5 資料繫結的基礎 8-6 SqlDataSource 資料來源控制項. 8-1 資料庫的基礎. 8-1-1 資料庫系統 8-1-2 關聯式資料庫. 8-1-1 資料庫系統.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '第 8 章 ADO.NET元件與資料繫結' - barth


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
8 ado net1
第8章 ADO.NET元件與資料繫結
  • 8-1 資料庫的基礎
  • 8-2 ASP.NET網頁資料庫
  • 8-3 ADO.NET的DataReader物件
  • 8-4 ADO.NET的DataSet物件
  • 8-5 資料繫結的基礎
  • 8-6 SqlDataSource資料來源控制項
slide3
8-1 資料庫的基礎
  • 8-1-1 資料庫系統
  • 8-1-2 關聯式資料庫
8 1 1
8-1-1 資料庫系統
  • 我們所泛稱的資料庫只是「資料庫系統」(Database System)的一部分,資料庫系統是由資料庫(Database)和「資料庫管理系統」(Database Management System,DBMS)所組成,如右圖所示:
8 1 2
8-1-2 關聯式資料庫
  • 關聯式資料庫是使用「資料表」(Tables)的二維表格來儲存資料,每一個資料表使用「欄位」(Fields)分類成很多群組,每一個群組是一筆「記錄」(Records),例如:通訊錄資料表,如下表所示:
8 2 asp net
8-2 ASP.NET網頁資料庫
  • 8-2-1 ASP.NET與資料庫
  • 8-2-2 ADO.NET的基礎
  • 8-2-3 ASP.NET的資料控制項
  • 8-2-4 將資料庫加入ASP.NET網站
8 2 1 asp net
8-2-1 ASP.NET與資料庫-說明
  • ASP.NET技術的Web應用程式就是一種「資料驅動Web應用程式」(Data-driven Web Applications),網頁實際內容是分開儲存成外部資料,當存取時才動態整合出最新的內容。
  • 而資料庫就是Web應用程式最常使用的外部資料來源,換句話說,大部分ASP.NET建立的資料驅動Web應用程式,就是一種資料庫驅動Web應用程式(Database-driven Web Application),即稱為網頁資料庫(Web Database)。
8 2 1 asp net1
8-2-1 ASP.NET與資料庫-圖例
  • 網頁資料庫就是一種結合前端HTML文件或Web Form表單的使用介面,配合後端Web伺服器和資料庫系統的一種應用程式架構,如下圖所示:
8 2 2 ado net
8-2-2 ADO.NET的基礎-說明
  • ADO.NET是微軟的資料存取技術,其主要目的是在.NET Framework平台存取資料,ADO.NET可以提供一致的物件模型來存取和編輯資料來源的資料。
  • 換句話說,它就是提供一致的資料處理方式,至於資料來源並不限資料庫,幾乎任何資料來源都可以。
8 2 2 ado net1
8-2-2 ADO.NET的基礎-物件模型
  • ADO.NET的主要類別物件有:Connection、Command、DataReader和DataSet,其物件模型如下圖所示:
8 2 2 ado net2
8-2-2 ADO.NET的基礎-物件說明
  • Connection物件:可以建立與資料來源間的連接。
  • Command物件:對資料來源執行指令,以資料庫來說,就是執行SQL指令敘述。
  • DataReader物件:可以從資料來源使用Command物件執行指令,取得唯讀(Read-Only)和只能向前(Forward-Only)的串流資料,每一次只能從資料來源讀取一列資料(即一筆)儲存到記憶體,所以執行效率非常高。
  • DataSet和DataTable物件:DataSet物件是由DataTable物件組成的集合物件,DataSet物件代表儲存在記憶體的資料庫,每一個DataTable儲存一個資料表的記錄資料,並且可以設定資料表間的關聯性(Relationship)。
  • DataAdapter物件:它是DataSet和Connection物件資料連接間的橋樑,可以將資料表填入DataSet物件。
8 2 2 ado net3
8-2-2 ADO.NET的基礎-名稱空間
  • ADO.NET類別分屬數個名稱空間,可以用來存取資料庫的資料。換句話說,ASP.NET網頁需要匯入指定的名稱空間,才能使用ADO.NET類別來存取資料庫。主要的名稱空間說明,如下表所示:
8 2 3 asp net
8-2-3 ASP.NET的資料控制項-說明
  • 在ASP.NET 1.0/1.1版存取資料庫需要使用ADO.NET元件,以程式碼連接、開啟、操作和顯示資料表的記錄資料。
  • 從ASP.NET 2.0版開始,我們可以直接使用資料控制項(Data Controls)建立網頁資料庫,而不用撰寫任一行程式碼。
  • 資料控制項依其功能可以分為:
    • 資料來源控制項
    • 資料邊界控制項
8 2 3 asp net1
8-2-3 ASP.NET的資料控制項-資料來源控制項(說明)
  • 資料來源控制項(DataSource Controls)是ASP.NET 2.0版開始支援的控制項,可以使用宣告方式來存取資料來源的資料。例如:宣告資料來源是SQL Server資料庫和指定相關屬性後,就可以存取資料庫的記錄資料。
  • 事實上,在資料來源控制項的背後就是ADO.NET元件的DataSet、DataReader、Connection和Command物件,ASP.NET只是改為宣告的控制項標籤,所以,我們不用撰寫任何一行程式碼,只需指定相關屬性值,就可以輕鬆存取資料來源的資料。
8 2 3 asp net2
8-2-3 ASP.NET的資料控制項-資料來源控制項(種類)
  • 在ASP.NET共提供五種資料來源控制項,如下表所示:
8 2 3 asp net3
8-2-3 ASP.NET的資料控制項-資料邊界控制項(說明)
  • 資料邊界控制項(DataBound Controls)也稱為資料顯示與維護控制項,它是使用者和資料來源間的橋樑,可以將資料來源取得的資料呈現給使用者檢視或編輯。簡單的說,這是一種現成的資料顯示和維護介面,可以將資料來源的資料編排成瀏覽程式顯示的網頁內容。
  • 換句話說,透過資料邊界控制項,我們就不用自行撰寫HTML標籤、程式碼或建立控制項來編排資料來源取得的資料,現在只需新增資料邊界控制項且指定相關屬性,就可以快速建立漂亮的資料編排效果,而且支援資料編輯功能,可以新增、更新和刪除資料來源的資料。
8 2 3 asp net4
8-2-3 ASP.NET的資料控制項-資料邊界控制項(種類)
  • 表格顯示的控制項:這類控制項可以建立傳統HTML表格的顯示外觀,讓我們以一列一筆記錄的方式來顯示資料表的記錄資料,而且提供有分頁功能,例如:GridView、DataList和ListView控制項。
  • 單筆顯示的控制項:此類控制項可以顯示單筆記錄,如同一疊卡片,在每張卡片上顯示一筆記錄,並且提供巡覽功能可以顯示指定卡片,或前一張、後一張卡片的記錄資料,例如:DetailsView和FormView控制項。
  • 選擇功能的控制項:即清單控制項的DropDownList和ListBox控制項,它們不只支援簡單資料繫結,也支援從資料來源控制項取得項目資料。
  • 樹狀結構的控制項:這類控制項是用來顯示階層架構的資料,特別針對XML文件的資料來源,例如:TreeView和Menu控制項。
8 2 4 asp net
8-2-4 將資料庫加入ASP.NET網站-本機與伺服器資料庫
  • 對於ASP.NET網站使用的資料庫來說,SQL Server 2005 Express版可以建立兩種資料庫,其說明如下所示:
    • 伺服器資料庫(Server Database):伺服器資料庫是屬於伺服器,所以,在伺服器上執行的應用程式都可以存取此資料庫。不過,VWD並不能建立伺服器資料庫,我們只能使用Management Studio Express管理工具來建立。
    • 本機資料庫(Local Database):本機資料庫是屬於ASP.NET網站的資料庫,它是建立在名為「\App_Data」子資料夾的資料庫。本書ASP.NET網站就是使用本機資料庫來建立網頁資料庫。
8 2 4 asp net1
8-2-4 將資料庫加入ASP.NET網站-加入資料庫
  • 我們可以在VWD開啟ASP.NET網站後,直接將資料庫加入ASP.NET網站。例如:將SQL Server資料庫Products.mdf,加入ASP.NET網站的「App_Data」資料夾,如下圖所示:

選加入的資料庫

8 3 ado net datareader
8-3 ADO.NET的DataReader物件
  • 8-3-1 開啟DataReader物件
  • 8-3-2 Command物件的Execute()方法
8 3 ado net datareader1
8-3 ADO.NET的DataReader物件-說明
  • ASP.NET網頁資料庫可以使用ADO.NET元件的DataReader或DataSet物件來取得記錄資料。因為本書在第9章才會詳細說明SQL查詢指令,所以,本章範例都是使用同一個SQL查詢指令,如下所示:

SELECT * FROM Books

  • 上述SQL指令SELECT沒有WHERE子句的任何條件,查詢結果可以取得資料表Books的所有記錄和欄位資料。
8 3 1 datareader
8-3-1 開啟DataReader物件-匯入名稱空間
  • DataReader物件是使用類似檔案串流來讀取記錄資料,它只能讀取,不能插入、刪除和更新記錄資料。在ASP.NET網頁首先需要匯入名稱空間,SQL Server與SQL Server Express匯入的名稱空間,如下所示:

<%@ Import Namespace="System.Data" %>

<%@ Import NameSpace="System.Data.SqlClient" %>

  • 在匯入名稱空間後,就可以使用ADO.NET物件來存取資料庫的記錄資料。
8 3 1 datareader connection
8-3-1 開啟DataReader物件-步驟一:建立Connection物件(建立)
  • 在ASP.NET網頁建立Connection物件,首先宣告SqlConnection物件變數objCon,如下所示:

SqlConnection objCon;

objCon = new SqlConnection(strDbCon);

  • 上述程式碼使用new運算子和建構子來建立名為objCon的SqlConnection物件。
8 3 1 datareader connection1
8-3-1 開啟DataReader物件-步驟一:建立Connection物件(連接字串)
  • strDbCon變數值是SQL Server 2005 Express的連接字串,如下所示:

strDbCon = "Data Source=.\\SQLEXPRESS;" +

"AttachDbFilename=" +

Server.MapPath("App_Data\\Products.mdf") +

";Integrated Security=True;" +

"TrustServerCertificate=False;" +

"User Instance=True;Context Connection=False";

8 3 1 datareader1
8-3-1 開啟DataReader物件-步驟二:開啟資料庫連接
  • 在建立Connection物件後,就可以使用Open()方法開啟資料庫連接,如下所示;

objCon.Open();

  • 上述程式碼使用名為objCon的Connection物件來開啟資料庫連接。
8 3 1 datareader command
8-3-1 開啟DataReader物件-步驟三:建立Command物件
  • 在建立和開啟Connection物件後,就可以使用SQL指令和Connection物件作為參數來建立Command物件,如下所示:

strSQL = "SELECT * FROM Books";

objCmd = new SqlCommand(strSQL, objCon);

  • 上述程式碼使用new運算子和建構子來建立Command物件,第2個參數是開啟的資料庫連接物件,表示向此資料來源執行第1個參數的SQL指令敘述。
8 3 1 datareader sql
8-3-1 開啟DataReader物件-步驟四:執行SQL指令敘述查詢資料表
  • 接著使用Command物件的ExecuteReader()方法執行SQL查詢指令,如下所示:

objDR = objCmd.ExecuteReader();

  • 上述程式碼取得DataReader物件objDR,讀者可以想像它是開啟一個資料庫的檔案串流。
8 3 1 datareader2
8-3-1 開啟DataReader物件-步驟五:讀取記錄資料
  • DataReader物件是一種資料串流,在ASP.NET網頁可以使用objDR.HasRows屬性判斷是否有記錄資料,如果有為true,然後就可以使用while迴圈讀取資料表的記錄資料,如下所示:

while (objDR.Read())

{

lblOutput.Text += objDR["BookID"] + " - ";

lblOutput.Text += objDR["BookTitle"] + " - ";

lblOutput.Text += objDR["BookPrice"] + "<br/>";

}

8 3 1 datareader datareader
8-3-1 開啟DataReader物件-步驟六:關閉DataReader和資料庫連接
  • 最後可以關閉DataReader串流物件和資料庫連接,如下所示:

objDR.Close();

objCon.Close();

  • 上述程式碼使用Close()方法關閉DataReader和Connection物件。
slide30
範例
  • protected void Page_Load(object sender, EventArgs e)
  • {
  • SqlConnection objCon;
  • SqlCommand objCmd;
  • SqlDataReader objDR;
  • string strDbCon, strSQL;
  • // 資料庫連接字串
  • strDbCon = "Data Source=.\\SQLEXPRESS;" +
  • "AttachDbFilename=" +
  • Server.MapPath("App_Data\\Products.mdf") +
  • ";Integrated Security=True;" +
  • "TrustServerCertificate=False;" +
  • "User Instance=True;Context Connection=False";
  • // 建立Connection物件
  • objCon = new SqlConnection(strDbCon);
  • objCon.Open(); // 開啟資料庫連接
  • strSQL = "SELECT * FROM Books";
  • // 建立Command物件的SQL指令
  • objCmd = new SqlCommand(strSQL, objCon);
  • // 取得DataReader物件
  • objDR = objCmd.ExecuteReader();
  • if (objDR.HasRows)
  • {
  • lblOutput.Text = "資料表記錄: <hr/>";
  • // 顯示資料表的記錄
  • while (objDR.Read())
  • {
  • lblOutput.Text += objDR["BookID"] + " - ";
  • lblOutput.Text += objDR["BookTitle"] + " - ";
  • lblOutput.Text += objDR["BookPrice"] + "<br/>";
  • }
  • }
  • else
  • {
  • lblOutput.Text = "資料表中沒有記錄資料!";
  • }
  • objDR.Close(); // 關閉DataReader
  • objCon.Close(); // 關閉資料庫連接
  • }
8 3 1 datareader3
8-3-1 開啟DataReader物件-範例網站

ASP.NET網站:Ch8-3-1

  • 在ASP.NET網頁取得Books資料表的DataReader物件後,以清單方式來顯示資料表的記錄資料,不過,只有顯示書號、書名和書價欄位,如下圖所示:
8 3 2 command execute
8-3-2 Command物件的Execute()方法-指令種類
  • 在ADO.NET元件的Command物件提供三種Execute()方法來執行SQL指令敘述,如下表所示:
8 3 2 command execute executescalar
8-3-2 Command物件的Execute()方法-ExecuteScalar()方法
  • ExecuteReader()方法在第8-3-1節已經說明過,ExecuteNonQuery()方法可以執行SQL語言的資料庫操作,詳見第9-4-3節的說明。在這一節筆者將說明ExecuteScalar()方法,可以取得資料表指定記錄的單一欄位值,如下所示:

lblOutput.Text = "查詢結果: " +

objCmd.ExecuteScalar();

  • 上述程式碼執行Command物件objCmd的SQL指令,如果傳回值不只一個。例如:SQL指令如果是查詢多筆記錄,取得的是第1筆記錄的第1個欄位。
8 3 2 command execute executescalar1
8-3-2 Command物件的Execute()方法-ExecuteScalar()方法

ASP.NET網站:Ch8-3-2

  • 在ASP.NET網頁使用Command物件的ExecuteScalar()方法執行SQL指令敘述,在TextBox控制項輸入SQL指令,按【查詢】鈕,就可以取得單一欄位值,如下圖所示:
8 4 ado net dataset
8-4 ADO.NET的DataSet物件
  • 8-4-1 DataSet物件的基礎
  • 8-4-2 將記錄填入DataSet物件
8 4 1 dataset
8-4-1 DataSet物件的基礎-說明
  • DataSet物件是由DataTable物件所組成,DataSet物件相當於是資料庫,DataTable物件就是資料表。
  • DataTable物件是以表格來儲存資料表的記錄資料,可以使用列或欄來處理,即使用DataRowCollection和DataColumnCollection集合物件。在集合物件的每一個DataRow物件是一列,也就是一筆記錄,每一個DataColumn物件是一欄。
8 4 2 dataset connection
8-4-2 將記錄填入DataSet物件-步驟一:建立與開啟Connection物件
  • 首先使用Connection物件建立資料連接物件objCon後,使用Open()方法開啟資料來源,如下所示:

objCon = new SqlConnection(strDbCon);

objCon.Open();

8 4 2 dataset dataadapter
8-4-2 將記錄填入DataSet物件-步驟二:建立DataAdapter物件
  • DataSet物件是使用DataAdapter物件來取得記錄資料,此物件是DataSet與Connection物件資料來源間的橋樑,可以呼叫方法將記錄資料填入DataSet物件,如下所示:

strSQL = "SELECT * FROM Books";

objDataAdapter = new SqlDataAdapter(

strSQL, objCon);

  • 上述程式碼建立DataAdapter物件,第1個參數是SQL查詢指令來取得記錄資料,第2個參數是開啟的Connection物件。
8 4 2 dataset dataset
8-4-2 將記錄填入DataSet物件-步驟三:建立DataSet物件填入記錄資料
  • 接著建立DataSet物件,將取得的記錄資料填入DataSet物件,如下所示:

DataSet objDataSet = new DataSet();

objDataAdapter.Fill(objDataSet, "Books");

  • 上述程式碼建立DataSet物件後,使用DataAdpater物件的Fill()方法將SQL指令的查詢結果填入第1個參數的的DataSet物件。更正確的說,就是新增DataTable物件,第2個參數是DataTable物件的別名。
8 4 2 dataset datatable
8-4-2 將記錄填入DataSet物件-步驟四:顯示DataTable物件的所有記錄
  • 使用foreach迴圈取出DataTable物件Rows屬性的每一個DataRow物件,也就是每一筆記錄,如下所示:

foreach (DataRow objRow in

objDataSet.Tables["Books"].Rows)

{

lblOutput.Text += objRow["BookID"] + " - ";

lblOutput.Text += objRow["BookTitle"] + " - ";

lblOutput.Text += objRow["BookAuthor"] + " - ";

lblOutput.Text += objRow["BookPrice"] + "<br/>";

}

8 4 2 dataset
8-4-2 將記錄填入DataSet物件-步驟五:關閉資料庫連接
  • 最後使用Close()方法關閉資料庫連接,此例的Connection物件為objCon,如下所示:

objCon.Close();

8 4 2 dataset1
8-4-2 將記錄填入DataSet物件-範例網站

ASP.NET網站:Ch8-4-2

  • 在ASP.NET網頁取得Book資料表的DataSet物件後,使用清單方式來顯示資料表的記錄資料,如下圖所示:
slide44
8-5 資料繫結的基礎
  • 8-5-1 資料繫結簡介
  • 8-5-2 建立ListBox控制項的簡單資料繫結
8 5 1
8-5-1 資料繫結簡介-說明
  • ASP.NET控制項支援資料繫結技術,能夠將不同資料來源的集合物件、陣列、DataReader或DataView(可以視為從DataSet物件建立的檢視表)等資料整合到ASP.NET控制項。
  • 換句話說,資料來源的資料會自動填入控制項,並且使用預設方式顯示資料,當然,我們可以設定控制項屬性來變更其顯示外觀。在ASP.NET使用的資料繫結技術分為兩種:簡單資料繫結和宣告式的資料繫結。
8 5 11
8-5-1 資料繫結簡介-簡單資料繫結
  • 在ASP.NET網頁使用簡單資料繫結(Simple Databinding)的控制項擁有DataSource屬性,可以使用實作IEnumerable介面的集合物件作為資料來源,然後呼叫DataBind()方法來建立資料繫結。
  • 例如:清單控制項的ListBox、RadioButtonList、CheckBoxList和DropDownList等都支援簡單資料繫結。
8 5 12
8-5-1 資料繫結簡介-宣告式的資料繫結
  • 宣告式的資料繫結(Declarative Databinding)是一種比較複雜的資料繫結,它是使用控制項的DataSourceID屬性來建立資料繫結。
  • 在ASP.NET網頁需要先建立「資料來源控制項」(DataSource Controls)存取資料來源的資料,然後建立「資料邊界控制項」(DataBound Controls)來顯示和維護資料來源的資料。
8 5 2 listbox
8-5-2 建立ListBox控制項的簡單資料繫結-說明
  • 簡單資料繫結可以使用集合物件作為資料來源,其最常的應用是建立List清單控制項的項目。
  • 換句話說,我們可以使用資料繫結技術來動態顯示清單的項目。
8 5 2 listbox1
8-5-2 建立ListBox控制項的簡單資料繫結-建立
  • 首先建立ArrayList物件作為資料來源,如下所示:

ArrayList names = new ArrayList();

names.Add("陳會安");

names.Add("江小魚");

names.Add("張無忌");

names.Add("陳允傑");

  • 接著指定ListBox控制項的DataSource屬性,如下所示:

lstNames.DataSource = names;

lstNames.DataBind();

8 5 2 listbox2
8-5-2 建立ListBox控制項的簡單資料繫結-範例網站

ASP.NET網站:Ch8-5-2

  • 在ASP.NET網頁使用簡單資料繫結技術,以ArrayList物件作為資料來源,建立ListBox控制項的項目清單,如下圖所示:
8 6 sqldatasource
8-6 SqlDataSource資料來源控制項
  • 8-6-1 建立SqlDataSource控制項
  • 8-6-2 資料來源控制項的標籤內容
  • 8-6-3 傳回沒有重複的欄位值
8 6 1 sqldatasource
8-6-1 建立SqlDataSource控制項-說明
  • 在VWD建立SqlDataSource控制項,請開啟「工具箱」視窗且展開【資料】區段,只需選取SqlDataSource控制項,拖拉至Web Form表單的編輯區域,就可以建立SqlDataSource控制項。

SqlDataSource控制項

8 6 1 sqldatasource1
8-6-1 建立SqlDataSource控制項-步驟一(新增)

步驟一:新增SqlDataSource控制項

  • 在VWD的「工具箱」視窗提供資料來源控制項,我們可以在【設計】標籤直接拖拉來新增資料來源控制項,如下圖所示:
8 6 1 sqldatasource2
8-6-1 建立SqlDataSource控制項-步驟一(設定資料來源)
  • 選資料來源控制項,開啟「SqlDataSource工作」功能表,選【設定資料來源】超連結,可以看到設定資料來源的精靈畫面。

選Products.mdf資料連接

建立SQL指令

測試SQL指令

將連接字串儲存在組態檔

8 6 1 sqldatasource3
8-6-1 建立SqlDataSource控制項-步驟二

步驟二:選擇控制項使用的資料來源控制項

  • 在新增資料來源控制項和設定好資料來源後,我們就可以在ListBox控制項選擇使用的資料來源,如下圖所示:

在【選取資料來源】欄選【SqlDataSource1】,ListBox控制項顯示【BookID】欄位,選取欄位值是【BookTitle】欄位

8 6 1 sqldatasource4
8-6-1 建立SqlDataSource控制項-步驟三

步驟三:新增事件處理程序來顯示使用者的選擇

  • 在新增好ListBox控制項後,我們就可以建立Button1控制項的事件處理程序,如下所示:

protected void Button1_Click(object sender, EventArgs e)

{

if (lstNames.SelectedIndex > -1)

{

lblOutput.Text = "選擇的書名: " +

lstNames.SelectedItem.Value;

}

}

8 6 1 sqldatasource5
8-6-1 建立SqlDataSource控制項-範例網站

ASP.NET網站:Ch8-6-1

  • 在ASP.NET網頁使用宣告式的資料繫結技術,建立SqlDataSource控制項來取得Products.mdf資料庫的資料,以便建立ListBox控制項的項目清單,如下圖所示:
8 6 2 sqldatasource
8-6-2 資料來源控制項的標籤內容-SqlDataSource控制項標籤(內容)
  • SqlDataSource控制項標籤,如下所示:

<asp:SqlDataSource ID="SqlDataSource1" runat="server"

ConnectionString="<%$ ConnectionStrings:ConnectionString %>"

SelectCommand="SELECT [BookID], [BookTitle] FROM [Books]">

</asp:SqlDataSource>

8 6 2 sqldatasource1
8-6-2 資料來源控制項的標籤內容-SqlDataSource控制項標籤(屬性說明)
  • ProviderName屬性值是定義在web.config組態檔的參數,如下所示:

<%$ ConnectionStrings:ConnectionString %>

  • 參數名稱分成兩部分,前面ConnectionStrings指明取得在web.config檔案同名標籤定義的參數值,後面是ConnectionString參數名稱,可以取得此參數名稱的資料庫連接字串。
8 6 2 web config
8-6-2 資料來源控制項的標籤內容-web.config組態檔
  • 在web.config組態檔的<connectionStrings>標籤定義連接字串的參數名稱和值,如下所示:

<connectionStrings>

<add name="ConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Products.mdf;Integrated Security=True;User Instance=True"

providerName="System.Data.SqlClient" />

</connectionStrings>

  • 上述<add>標籤新增name屬性為ConnectionString的連接字串。
8 6 3
8-6-3 傳回沒有重複的欄位值-說明
  • 當我們使用資料繫結將資料庫欄位填入DropDownList控制項時,可能會遇到重複值欄位的問題,如下圖所示:
8 6 31
8-6-3 傳回沒有重複的欄位值-設定
  • 選資料來源控制項,在「SqlDataSource工作」功能表選【設定資料來源】超連結,請重複按【下一步】鈕,直到到達設定SQL陳述式的步驟。

勾選【只傳回不重複的資料列】

按【ORDER BY】鈕新增排序條件

8 6 32
8-6-3 傳回沒有重複的欄位值-範例網站

ASP.NET網站:Ch8-6-3

  • 在ASP.NET網頁建立SqlDataSource控制項和DropDownList控制項來顯示Products.mdf資料庫的圖書種類,因為有重複值,所以需要修改SQL指令,並且指定排序欄位是BookCatalog,如下圖所示: