ASP.NET數據源

數據源控件與數據綁定控件交互並隱藏複雜的數據綁定過程。這些工具爲數據綁定控件提供數據,並支持插入,刪除,排序和更新等操作的執行。

每個數據源控件包裝一個特定的數據提供程序 - 關係數據庫,XML文檔或自定義類,並幫助我們:

  • 管理連接
  • 選擇數據
  • 管理分頁,緩存等表示方面
  • 操縱數據

在ASP.NET中有許多數據源控件可用於從SQL Server,ODBC或OLE DB服務器,XML文件和業務對象訪問數據。

根據數據的類型,這些控件可以分爲兩大類:

  • 分層數據源控件
  • 基於表的數據源控件

用於分層數據的數據源控件是:

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

用於表格數據的數據源控件是:

編號

數據源控件

描述

1

SqlDataSource

它表示與返回SQL數據的ADO.NET數據提供者的連接,包括可通過OLEDBODBC訪問的數據源。

2

ObjectDataSource

它允許綁定到返回數據的自定義.Net業務對象。

3

LinqdataSource

它允許綁定到Linq-to-SQL查詢的結果(僅由ASP.NET 3.5支持)。

4

AccessDataSource

它表示與Microsoft Access 數據庫的連接。

數據源視圖

數據源視圖是DataSourceView類的對象。它代表不同數據操作(如排序,過濾等)的數據定製視圖。

DataSourceView類用作所有數據源視圖類的基類,這些類定義了數據源控件的功能。

下表提供了DataSourceView類的屬性:

編號

屬性

描述

1

CanDelete

指示是否允許在基礎數據源上進行刪除。

2

CanInsert

指示是否允許在基礎數據源上插入。

3

CanPage

指示是否允許在基礎數據源上進行分頁。

4

CanRetrieveTotalRowCount

指示總行數信息是否可用。

5

CanSort

指示是否可以對數據進行排序。

6

CanUpdate

指示是否允許在基礎數據源上進行更新。

7

Events

獲取數據源視圖的事件處理程序委託的列表。

8

Name

視圖的名稱。

下表提供了DataSourceView類的方法:

編號

方法

描述

1

CanExecute

確定是否可以執行指定的命令。

2

ExecuteCommand

執行特定的命令。

3

ExecuteDelete

DataSourceView對象所表示的數據列表執行刪除操作。

4

ExecuteInsert

DataSourceView對象表示的數據列表執行插入操作。

5

ExecuteSelect

獲取底層數據存儲的數據列表。

6

ExecuteUpdate

DataSourceView對象表示的數據列表執行更新操作。

7

Delete

對與視圖關聯的數據執行刪除操作。

8

Insert

對與視圖關聯的數據執行插入操作。

9

Select

返回查詢的數據。

10

Update

對與視圖關聯的數據執行更新操作。

11

OnDataSourceViewChanged

引發DataSourceViewChanged事件。

12

RaiseUnsupportedCapabilitiesError

RaiseUnsupportedCapabilitiesError方法調用,以將ExecuteSelect操作請求的功能與視圖支持的功能進行比較。

SqlDataSource控件

SqlDataSource控件表示與關係數據庫(如SQL Server或Oracle數據庫)的連接,或可通過OLEDB或開放式數據庫連接(ODBC)訪問的數據。連接數據是通過兩個重要的屬性ConnectionStringProviderName來完成的。

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

<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" />

在底層數據上配置各種數據操作取決於數據源控件的各種屬性(屬性組)。

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

編號

屬性集/組

1

DeleteCommand,DeleteParameters,DeleteCommandType

獲取或設置用於刪除基礎數據中的行的SQL語句,參數和類型。

2

FilterExpression,FilterParameters

獲取或設置數據過濾字符串和參數。

3

InsertCommand,InsertParameters,InsertCommandType

獲取或設置用於在基礎數據庫中插入行的SQL語句,參數和類型。

4

SelectCommand,SelectParameters,SelectCommandType

獲取或設置從底層數據庫檢索行的SQL語句,參數和類型。

5

SortParameterName

獲取或設置命令的存儲過程將用於排序數據的輸入參數的名稱。

5

UpdateCommand,UpdateParameters,UpdateCommandType

獲取或設置用於更新基礎數據存儲中的行的SQL語句,參數和類型。

以下代碼片段顯示了爲數據操作啓用的數據源控件:

<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控件允許用戶定義的類將其方法的輸出關聯到數據綁定控件。該類的編程接口與SqlDataSource控件幾乎相同。

以下是綁定業務對象的兩個重要方面:

  • 可綁定的類應該有一個默認的構造函數,它應該是無狀態的,並且可以映射選擇,更新,插入和刪除語義的方法。
  • 對象一次只能更新一個項目,批處理操作不支持。

讓我們直接看一個例子來處理這個控件。 Student類是與對象數據源一起使用的類。 這個類有三個屬性:學生ID,姓名和城市。 它有一個默認的構造函數和一個GetStudents方法來檢索數據。

Student類代碼如下:

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;

/// <summary>
/// Student 的摘要說明
/// </summary>
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("學生編號", typeof(System.Int32));
        dt.Columns.Add("姓名", typeof(System.String));
        dt.Columns.Add("城市", typeof(System.String));
        dt.Rows.Add(new object[] { 1001, "何馬", "海口" });
        dt.Rows.Add(new object[] { 1002, "李小靜", "上海" });
        ds.Tables.Add(dt);

        return ds;
    }
}

執行以下步驟將對象與對象數據源綁定並檢索數據:

  • 創建一個新的網站,名稱爲:DataSourceDemo。如下圖 -
    ASP.NET數據源
  • 通過右鍵單擊解決方案資源管理器中的項目名稱,添加一個類(名稱爲:Students.cs),並將上面的代碼放入其中。
  • 構建解決方案,以便應用程序可以使用該類的引用。
  • ObjectDataSource控件放置在Web窗體中。如下圖所示 -
    ASP.NET數據源
  • 通過點擊上圖中的 【配置數據源…】 鏈接來選擇對象來配置數據源。參考下圖 -
    ASP.NET數據源
  • 爲數據的不同操作選擇一種數據方法。在這個例子中,只有一個方法。如下圖所示 -
    ASP.NET數據源
  • 在窗體頁面上放置數據綁定控件(如:GridView),並選擇對象數據源作爲其基礎數據源。
    ASP.NET數據源
  • 經過上面步驟後,設計視圖應該如下所示:
    ASP.NET數據源

文件 Default.aspx 中的代碼如下所示 -

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>數據源示例</title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetStudents" TypeName="Student"></asp:ObjectDataSource>
            <br />
            <asp:GridView ID="GridView1" runat="server" DataSourceID="ObjectDataSource1">
            </asp:GridView>
        </div>
    </form>
</body>
</html>

運行該項目,它從Student類中檢索硬編碼的元組,並顯示其中的數據如下 -

ASP.NET數據源

AccessDataSource控件

AccessDataSource控件表示到Access數據庫的連接。它基於SqlDataSource控件,並提供更簡單的編程接口。以下代碼片段提供了數據源的基本語法:

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

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

從ASP.NET應用程序中更新Access數據庫是有問題的,因爲Access數據庫是普通文件,ASP.NET應用程序的默認帳戶可能沒有寫入數據庫文件的權限。

易百教程移動端:請掃描本頁面底部(右側)二維碼並關注微信公衆號,回覆:"教程" 選擇相關教程閱讀或直接訪問:http://m.yiibai.com

上一篇:ASP.NET Ajax控件 下一篇:ASP.NET數據綁定

加QQ羣啦,易百教程官方技術學習羣

QQ羣名稱

羣號

人數

免費

等級

羣介紹

JAVA技術

227270512

2000

LV5

Java基礎,JSP(Servlet),JAVA框架,Java高併發架構,Maven等等

MySQL/SQL

418407075

2000

LV5

SQL基礎,MySQL基礎,MySQL存儲過程,視圖,觸發器等等

大數據開發

655154550

2000

LV5

Spark,zookeeper,kafka,CDH,hive,fulme,hbase等Hadoop雲計算生態圈技術

Python技術

287904175

2000

LV5

Python編程,Python Web,Python大數據,Python爬蟲,自然語言處理等

Linux技術

479429477

2000

LV1

Redhat/Centos,Ubuntu,Shell,運維,監控等技術

PHP/Web開發者

460153241

1000

LV0

PHP基礎,PHP高級,網站優化/架構,JS,HTML,JQuery,前端等Web開發技術

人工智能

456236082

1000

LV0

人工智能,深度學習,算法等技術

Oracle數據庫

175248146

1000

LV0

SQL基礎,Oracle基礎,Oracle存儲過程,視圖,觸發器等等

Android開發

159629185

1000

LV0

Android開發,Android Studio,Kotlin,Dagger等技術

微軟技術

579821706

1000

LV0

C#,ASP.Net,VB.Net,ADO.Net,SQL Server,VBA,Excel等技術