ASP.NET 數據源

2022-06-27 15:43 更新

數據源

一個 data sourse 控件與數據綁定的控件相互作用,并隱藏了復雜的數據的聯(lián)編過程。這些是提供數據給 data bound 控件的工具,并且支持如插入,刪除和更新操作的執(zhí)行。

每一個 data sourse 控件包裹了一個特殊的數據提供者相關的數據庫,XML 文件,或者是自定義類,并且?guī)椭?/p>

  • 管理連接
  • 選擇數據
  • 管理像分頁,緩存等的展示方面
  • 操控數據

有許多可在 ASP.NET 中獲得的 data sourse 控件,為從 SQL 服務器,ODBC 或者 OLE DB 服務器,從 XML 文件,和從業(yè)務對象中獲得數據。

基于數據類型,這些控件能被分為兩個種類:

  • 分層的 data sourse 控件
  • 基于表格的 data sourse 控件

用于分層數據的 data sourse 控件是:

  • XMLDataSource - 它允許用或者不用模式信息綁定 XML 文件和字符串。
  • SiteMapDataSource - 它允許綁定一個提供站點地圖信息的提供者。

用作表格數據的 data source 控件是:

Data source 控件描述
SqlDataSource它表示到返回 SQL 數據的 ADO.NET data provider 的連接,包括通過 OLEDB 和 QDBC 可獲得的 data sources。
ObjectDataSource它允許綁定一個返回數據的自定義的 .Net business 對象
LinqdataSource它允許綁定 Linq-t0-SQL 查詢的結果。(僅由 ASP.NET 3.5 支持)
AccessDataSource它表示到 Microsoft Access 數據庫的連接。

Data Source 視圖

Data source 視圖是 DataSourceView 類的對象,它代表一個自定義的為不同數據操作如排序,過濾等而設計的數據視圖。

DataSourceView 類作為所有 data source 視圖類的基本類而使用,它定義了 data source 控件的性能。

以下表格提供了 DataSourceView 類的屬性:

屬性描述
CanDelete表示是否允許刪除潛在的 data source。
CanInsert表示是否允許插入潛在的 data source。
CanPage表示是否允許給潛在的 data source 分頁。
CanRetrieveTotalRowCount表示總的行信息能否獲得。
CanSort表示數據是否能排序。
CanUpdate表示是否允許在潛在的 data source 上更新。
Events獲得 data source 視圖代表的事件句柄的列表。
Name視圖的名字。

以下的表格提供了 DataSourceView 類的方法:

方法描述
CanExecute確定指定的命令是否能執(zhí)行。
ExecuteCommand執(zhí)行指定的命令。
ExecuteDelete在 DataSourceView 對象所表示的數據列表上執(zhí)行一個刪除操作。
ExecuteInsert在 DataSourceView 對象所表示的數據列表上執(zhí)行一個插入操作。
ExecuteSelect從潛在的數據存儲中獲取數據列表。
ExecuteUpdate在 DataSourceView 對象所表示的數據列表上執(zhí)行一個更新操作。
Delete在和視圖所聯(lián)系的數據上執(zhí)行一個刪除操作。
Insert在和視圖所聯(lián)系的數據上執(zhí)行一個插入操作。
Select返回被查詢的數據。
Update在和視圖所聯(lián)系的數據上執(zhí)行一個更新操作。
OnDataSourceViewChanged提出 DataSourceViewChanged 事件。
RaiseUnsupportedCapabilitiesError由 RaiseUnsupportedCapabilitiesError 方法調用來將 ExecuteSelect 操作所需要的能力和視圖所支持的能力相比較。

SqlDataSource 控件

SqlDataSource 控件代表到相關數據庫比如 SQL Server 或者 Oracle數據庫,或者通過 OLEDB 或 Open Database Connectivity(ODBC) 的可存取數據的連接。數據連接通過兩個重要的屬性 ConnectionString 和 ProviderName 完成。

以下的代碼片段提供了控件的基本語法:

<asp:SqlDataSource runat="server" ID="MySqlSource"
   ProviderName='<%$ ConnectionStrings:LocalNWind.ProviderName  %>'
   ConnectionString='<%$ ConnectionStrings:LocalNWind %>'
   SelectionCommand= "SELECT * FROM EMPLOYEES" />

<asp:GridView ID="GridView1" runat="server" DataSourceID="MySqlSource" />

在潛在的數據上配置不同的數據操作依賴于 data source 控件的不同屬性(屬性集)。

以下的表格提供了相關的 SqlDataSource 控件的屬性集,它提供了控件的編程接口:

屬性組描述
DeleteCommand,
DeleteParameters,
DeleteCommandType
獲取或設置 SQL 語句,參數和在潛在數據中刪除行的類型。
FilterExpression,
FilterParameters
獲取并設置數據過濾字符串和參數。
InsertCommand,
InsertParameters,
InsertCommandType
獲取或設置 SQL 語句,參數和在潛在數據中插入行的類型。
SelectCommand,
SelectParameters,
SelectCommandType
獲取或設置 SQL 語句,參數和在潛在數據中檢索行的類型。
SortParameterName獲取或設置一個輸入參數的名字,它將被命令存儲的過程用來給數據排序。
UpdateCommand,
UpdateParameters,
UpdateCommandType
獲取或設置 SQL 語句,參數和在潛在數據中更新行的類型。

以下的代碼片段展示了能被用來做數據操作的 data source 控件:

<asp:SqlDataSource runat="server" ID= "MySqlSource"
   ProviderName='<%$ ConnectionStrings:LocalNWind.ProviderName  %>'
   ConnectionString=' <%$ ConnectionStrings:LocalNWind %>'
   SelectCommand= "SELECT * FROM EMPLOYEES"
   UpdateCommand= "UPDATE EMPLOYEES SET LASTNAME=@lame"
   DeleteCommand= "DELETE FROM EMPLOYEES WHERE EMPLOYEEID=@eid"
   FilterExpression= "EMPLOYEEID > 10">
   .....
   .....
</asp:SqlDataSource>

ObjectDataSource 控件

ObjectDataSource 控件使 user-defined 類能讓它們方法的輸出和 data bound 控件相連接。這個類的編程接口幾乎和 SqlDataSource 控件相同。

以下是綁定客戶對象的兩個重要方面:

  • 可綁定的類應該擁有一個默認的構造函數,它應該是無狀態(tài)的,并且擁有能夠映射到選擇,更新,插入,和刪除語意的方法。
  • 對象必須一次更新一個項目,批處理操作是不支持的。

讓我們直接到一個例子中來使用這個控件。student 類是被用來和一個 data source 對象一起使用的類。這個類有三個屬性:a student id,name,和 city。它有一個默認的構造函數和一個檢索數據的 GetStudents 方法。

student 類:

public class Student
{
   public int StudentID { get; set; }
   public string Name { get; set; }
   public string City { get; set; }

   public Student()
   { }

   public DataSet GetStudents()
   {
      DataSet ds = new DataSet();
      DataTable dt = new DataTable("Students");

      dt.Columns.Add("StudentID", typeof(System.Int32));
      dt.Columns.Add("StudentName", typeof(System.String));
      dt.Columns.Add("StudentCity", typeof(System.String));
      dt.Rows.Add(new object[] { 1, "M. H. Kabir", "Calcutta" });
      dt.Rows.Add(new object[] { 2, "Ayan J. Sarkar", "Calcutta" });
      ds.Tables.Add(dt);

      return ds;
   }
}

采取以下的步驟來將對線綁定到一個 data source 對象和檢索數據:

  • 創(chuàng)建一個新的網頁。
  • 通過右擊 Solution Explorer 的項目來給它添加一個類(Student.cs),添加一個類模板,將上面的代碼放在里面。
  • 建立方法使得應用程序可以使用類的引用。
  • 在網頁表單中放置一個 data source 控件對象。
  • 通過選擇對象來配置 data source。

1

  • 給不同的數據操作選擇數據方法。在這個例子中,僅有一個方法。

2

  • 在頁面上放置一個 data bound 控件比如 grid view 并且選擇 data source 對象作為潛在的 data source。

3

  • 在這個階段,設計視圖應該像以下這樣:

4

  • 運行項目,它檢索了 students 類中的硬編碼的元祖。

5

AccessDataSource 控件

AccessDataSource 控件代表了到 Access 數據庫的連接。它基于 SqlDataSource 控件并提供了更簡單的編程接口。以下的代碼片段提供了 data source 的基本語法:

<asp:AccessDataSource ID="AccessDataSource1 runat="server" 
   DataFile="~/App_Data/ASPDotNetStepByStep.mdb" SelectCommand="SELECT * FROM  [DotNetReferences]">
</asp:AccessDataSource>

AccessDataSource 控件打開了只讀模式的數據庫。但是,它也能被用來執(zhí)行插入,更新或者刪除操作。這以使用 ADO.NET 命令和參數集合來完成。

更新對于 ASP.NET 應用程序內的 Access 數據庫來說是有問題的,這是因為 Access 數據庫是一個純文本并且默認的 ASP.NET 應用程序賬戶可能有寫數據庫文件的權限。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號