共用方式為


SqlDataSource Web 伺服器控制項概觀

更新:2007 年 11 月

SqlDataSource 控制項可讓您使用 Web 伺服器控制項來存取位於關聯式資料庫的資料。關聯式資料庫包含 Microsoft SQL Server、Oracle 資料庫,以及 OLE DB 與 ODBC 資料來源。您可以使用 SqlDataSource 控制項來搭配資料繫結控制項 (例如,GridViewFormViewDetailsView 控制項),在使用少許或不使用程式碼的情況下,顯示和管理 ASP.NET Web 網頁上的資料。

這個主題包含:

  • 背景

  • 程式碼範例

  • 類別參考

背景

SqlDataSource 控制項會使用 ADO.NET 類別與 ADO.NET 支援的任何資料庫互動。其中包括 Microsoft SQL Server (使用 System.Data.SqlClient 提供者)、System.Data.OleDbSystem.Data.Odbc 和 Oracle (使用 System.Data.OracleClient 提供者)。使用 SqlDataSource 控制項可以讓您在不直接使用 ADO.NET 類別的情況下,存取和管理 ASP.NET 網頁中的資料。您提供連接資料庫的連接字串,並且定義使用資料的 SQL 陳述式或預存程序。在執行階段,SqlDataSource 控制項會自動開啟資料庫連接、執行 SQL 陳述式或預存程序、傳回選取的資料 (如果有的話),然後關閉連接。

將 SqlDataSource 控制項連接至資料來源

當您設定 SqlDataSource 控制項時,會將 ProviderName 屬性設定為資料庫類型 (預設值為 System.Data.SqlClient),並且將 ConnectionString 屬性設定為包含連接資料庫所需資訊的連接字串。連接字串的內容視資料來源控制項存取的資料庫類型而有不同。例如,SqlDataSource 控制項需要伺服器名稱、資料庫 (資料庫目錄) 名稱,以及當連接至 SQL Server 時如何驗證使用者的資訊。如需有效連接字串的資訊,請參閱 SqlConnectionOracleConnectionOleDbConnectionOdbcConnection 類別的 ConnectionString 屬性主題。

若您不想在設計階段將連接字串設定為 SqlDataSource 控制項中的屬性設定,可以使用 connectionStrings 組態項目,把它們集中儲存做為應用程式組態設定的一部分。這可以讓您獨立於 ASP.NET 程式碼管理連接字串,包括使用受保護的組態將它們加密。下列範例顯示使用儲存在名為 MyNorthwind 之 connectionStrings 組態項目中的連接字串,連接 SQL Server Northwind 範例資料庫。

<%@ Page language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head >
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" >
      <asp:SqlDataSource
          id="SqlDataSource1"
          
          DataSourceMode="DataReader"
          ConnectionString="<%$ ConnectionStrings:MyNorthwind%>"
          SelectCommand="SELECT LastName FROM Employees">
      </asp:SqlDataSource>

      <asp:ListBox
          id="ListBox1"
          
          DataTextField="LastName"
          DataSourceID="SqlDataSource1">
      </asp:ListBox>

    </form>
  </body>
</html>
<%@ Page language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head >
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" >
      <asp:SqlDataSource
          id="SqlDataSource1"
          
          DataSourceMode="DataReader"
          ConnectionString="<%$ ConnectionStrings:MyNorthwind%>"
          SelectCommand="SELECT LastName FROM Employees">
      </asp:SqlDataSource>

      <asp:ListBox
          id="ListBox1"
          
          DataTextField="LastName"
          DataSourceID="SqlDataSource1">
      </asp:ListBox>

    </form>
  </body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head >
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" >
      <asp:SqlDataSource
          id="SqlDataSource1"
          
          DataSourceMode="DataReader"
          ConnectionString="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;"
          SelectCommand="SELECT LastName FROM Employees">
      </asp:SqlDataSource>

      <asp:ListBox
          id="ListBox1"
          
          DataTextField="LastName"
          DataSourceID="SqlDataSource1">
      </asp:ListBox>

    </form>
  </body>
</html>

使用 SqlDataSource 控制項發出資料命令

您可以為 SqlDataSource 命令指定最多四個命令 (SQL 查詢):SelectCommandUpdateCommandDeleteCommandInsertCommand。每個命令是不同的資料來源控制項屬性。您可以為每個命令屬性指定要讓資料來源控制項執行的 SQL 陳述式。如果資料來源控制項連接至支援預存程序的資料庫,您可以指定預存程序的名稱取代 SQL 陳述式。

您可以建立參數型命令以包含在執行階段所提供值的預留位置。下列範例顯示一般的參數型 SQL Select 命令:

Select CustomerID, CompanyName From Customers Where City = @city

您可以建立參數物件指定命令在執行階段取得參數值的位置,例如從其他控制項、查詢字串等。此外,您也可以程式設計方式指定參數值。如需詳細資訊,請參閱使用參數和 SqlDataSource 控制項

當呼叫資料來源控制項的對應 SelectUpdateDeleteInsert 方法時,資料來源控制項就會執行命令。當您呼叫網頁或是繫結至資料來源控制項之控制項的 DataBind 方法時,就會自動呼叫 Select 方法。當您想要資料來源控制項執行命令時,也可以明確呼叫這四個方法其中之一。某些控制項,例如 GridView 控制項,能夠自動呼叫方法,而不需要您去呼叫方法或是明確呼叫 DataBind 方法。如需詳細資訊,請參閱使用 SqlDataSource 控制項選取資料使用 SqlDataSource 控制項修改資料

傳回 DataSet 或 DataReader 物件

SqlDataSource 控制項可以兩種形式傳回資料:做為 DataSet 物件或 ADO.NET 資料讀取器。您可以設定資料來源控制項的 DataSourceMode 屬性,指定要傳回的形式。DataSet 物件會在伺服器記憶體中包含所有資料,讓您在擷取後可以使用不同的方式管理資料。資料讀取器提供能夠擷取個別資料錄的唯讀資料指標。一般而言,如果您想要在擷取後篩選、排序或翻遍資料,或是想要維護快取,可以選擇傳回資料集。相反地,當您只是想要傳回資料,然後使用網頁上的控制項顯示這項資料時,可以使用資料讀取器。例如,若要傳回想要顯示在 ListBoxDropDownListGridView 控制項的資料,而其中的結果清單是使用唯讀格式顯示時,使用資料讀取器是理想的方式。

使用 SqlDataSource 控制項進行快取

SqlDataSource 控制項能夠快取擷取的資料,藉由避免耗時且大量的查詢以增強應用程式效能。快取在大部分情形中都很實用,因為資料並非高度動態,且快取結果不會用到太多系統記憶體。

預設不會啟用快取。您可以將 EnableCaching 設定為 true 啟用快取。快取機制是根據時間;您可以將 CacheDuration 屬性設定為快取資料的秒數。資料來源控制項會為每個連接、選取命令、選取參數和快取設定組合維護不同的快取項目。

SqlDataSource 控制項也可以利用 SQL Server 的快取相依性功能 (如果您的 SQL Server 版本可用的話)。這個功能可以讓您指定在 SQL Server 回報指定資料表中有變動時,才維護快取中的資料。這種類型的快取可以讓您改進 Web 應用程式中資料存取的效能,因為您可以在必要時才取得重新整理的資料,以便最小化資料擷取次數。

如需詳細資訊,請參閱快取含有 SqlDataSource 控制項的資料

使用 SqlDataSource 控制項篩選

如果您已經啟用 SqlDataSource 控制項的快取,並且指定資料集做為 Select 查詢傳回的資料格式,也就可以在不重新執行查詢的情況下篩選資料。SqlDataSource 控制項支援 FilterExpression 屬性,可以讓您指定選取範圍準則,以套用至資料來源控制項維護的資料。您也可以建立在執行階段提供值給篩選條件運算式的特殊 FilterParameters 物件,以便參數化篩選條件運算式。

使用 SqlDataSource 控制項進行排序

DataSourceMode 設定為 DataSet 時,SqlDataSource 控制項便可支援來自繫結控制項的排序要求。如需詳細資訊,請參閱排序含有資料來源控制項的資料

回到頁首

程式碼範例

使用 SqlDataSource 控制項選取資料

使用參數和 SqlDataSource 控制項

使用 SqlDataSource 控制項修改資料

快取含有 SqlDataSource 控制項的資料

HOW TO:啟用 SqlDataSource 控制項的篩選功能

HOW TO:使用 SqlDataSource 控制項連接至 SQL Server 資料庫 (Visual Studio)

HOW TO:使用 SqlDataSource 控制項連接至 Access 資料庫 (Visual Studio)

HOW TO:使用 SqlDataSource 控制項連接到 ODBC 資料庫 (Visual Studio)

HOW TO:使用 SqlDataSource 控制項連接到 Oracle 資料庫 (Visual Studio)

回到頁首

類別參考

下表列出 SqlDataSource 控制項的相關關鍵類別。

成員

描述

SqlDataSource

控制項的主要類別。

回到頁首

請參閱

概念

LinqDataSource Web 伺服器控制項概觀

參考

ObjectDataSource Web 伺服器控制項概觀

其他資源

資料來源 Web 伺服器控制項