📜  ASP.NET-数据源

📅  最后修改于: 2020-11-21 05:51:09             🧑  作者: Mango


数据源控件与数据绑定控件进行交互,并隐藏复杂的数据绑定过程。这些工具可将数据提供给数据绑定控件,并支持执行插入,删除,排序和更新等操作。

每个数据源控件都包装一个特定的数据提供者关系数据库,XML文档或自定义类,并有助于:

  • 管理连接
  • 选择数据
  • 管理演示方面,例如分页,缓存等。
  • 处理数据

ASP.NET中有许多数据源控件可用于从SQL Server,ODBC或OLE DB服务器,XML文件和业务对象访问数据。

根据数据类型,这些控件可以分为两类:

  • 分层数据源控件
  • 基于表的数据源控件

用于分层数据的数据源控件是:

  • XMLDataSource-允许绑定带有或不带有模式信息的XML文件和字符串。

  • SiteMapDataSource-允许绑定到提供站点地图信息的提供程序。

用于表格数据的数据源控件为:

Data source controls Description
SqlDataSource It represents a connection to an ADO.NET data provider that returns SQL data, including data sources accessible via OLEDB and ODBC.
ObjectDataSource It allows binding to a custom .Net business object that returns data.
LinqdataSource It allows binding to the results of a Linq-to-SQL query (supported by ASP.NET 3.5 only).
AccessDataSource It represents connection to a Microsoft Access database.

数据源视图

数据源视图是DataSourceView类的对象。代表针对不同数据操作(例如排序,过滤等)的数据的自定义视图。

DataSourceView类用作所有数据源视图类的基类,这些类定义了数据源控件的功能。

下表提供了DataSourceView类的属性:

Properties Description
CanDelete Indicates whether deletion is allowed on the underlying data source.
CanInsert Indicates whether insertion is allowed on the underlying data source.
CanPage Indicates whether paging is allowed on the underlying data source.
CanRetrieveTotalRowCount Indicates whether total row count information is available.
CanSort Indicates whether the data could be sorted.
CanUpdate Indicates whether updates are allowed on the underlying data source.
Events Gets a list of event-handler delegates for the data source view.
Name Name of the view.

下表提供了DataSourceView类的方法:

Methods Description
CanExecute Determines whether the specified command can be executed.
ExecuteCommand Executes the specific command.
ExecuteDelete Performs a delete operation on the list of data that the DataSourceView object represents.
ExecuteInsert Performs an insert operation on the list of data that the DataSourceView object represents.
ExecuteSelect Gets a list of data from the underlying data storage.
ExecuteUpdate Performs an update operation on the list of data that the DataSourceView object represents.
Delete Performs a delete operation on the data associated with the view.
Insert Performs an insert operation on the data associated with the view.
Select Returns the queried data.
Update Performs an update operation on the data associated with the view.
OnDataSourceViewChanged Raises the DataSourceViewChanged event.
RaiseUnsupportedCapabilitiesError Called by the RaiseUnsupportedCapabilitiesError method to compare the capabilities requested for an ExecuteSelect operation against those that the view supports.

SqlDataSource控件

SqlDataSource控件表示与关系数据库(例如SQL Server或Oracle数据库)的连接,或者表示可通过OLEDB或开放式数据库连接(ODBC)访问的数据。通过两个重要属性ConnectionString和ProviderName建立与数据的连接。

以下代码段提供了控件的基本语法:




在基础数据上配置各种数据操作取决于数据源控件的各种属性(属性组)。

下表提供了SqlDataSource控件的相关属性集,该属性提供了控件的编程接口:

Property Group Description

DeleteCommand,

DeleteParameters,

DeleteCommandType

Gets or sets the SQL statement, parameters, and type for deleting rows in the underlying data.

FilterExpression,

FilterParameters

Gets or sets the data filtering string and parameters.

InsertCommand,

InsertParameters,

InsertCommandType

Gets or sets the SQL statement, parameters, and type for inserting rows in the underlying database.

SelectCommand,

SelectParameters,

SelectCommandType

Gets or sets the SQL statement, parameters, and type for retrieving rows from the underlying database.
SortParameterName Gets or sets the name of an input parameter that the command’s stored procedure will use to sort data.

UpdateCommand,

UpdateParameters,

UpdateCommandType

Gets or sets the SQL statement, parameters, and type for updating rows in the underlying data store.

以下代码片段显示了启用了数据操作的数据源控件:


   .....
   .....

ObjectDataSource控件

ObjectDataSource控件使用户定义的类能够将其方法的输出与数据绑定控件相关联。此类的编程接口几乎与SqlDataSource控件相同。

以下是绑定业务对象的两个重要方面:

  • 可绑定类应该具有默认构造函数,它应该是无状态的,并且具有可以映射为选择,更新,插入和删除语义的方法。

  • 对象必须一次更新一项,不支持批处理操作。

让我们直接转到一个示例来使用此控件。学生班是要与对象数据源一起使用的班。此类具有三个属性:学生ID,姓名和城市。它具有默认构造函数和用于检索数据的GetStudents方法。

学生班:

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;
   }
}

采取以下步骤将对象与对象数据源绑定并检索数据:

  • 创建一个新的网站。

  • 通过从解决方案资源管理器中右键单击项目,添加一个类模板,然后将上面的代码放入其中,来向其中添加一个类(Students.cs)。

  • 构建解决方案,以便应用程序可以使用对该类的引用。

  • 将对象数据源控件放在Web表单中。

  • 通过选择对象来配置数据源。

选择对象

  • 为数据的不同操作选择一种数据方法。在此示例中,只有一种方法。

选择一种数据方法

  • 在页面上放置诸如网格视图之类的数据绑定控件,然后选择对象数据源作为其基础数据源。

数据绑定控制

  • 在此阶段,设计视图应如下所示:

对象数据源

  • 运行项目,它从学生班级检索硬编码的元组。

对象数据结果

AccessDataSource控件

AccessDataSource控件表示与Access数据库的连接。它基于SqlDataSource控件,并提供了更简单的编程接口。以下代码段提供了数据源的基本语法:



AccessDataSource控件以只读模式打开数据库。但是,它也可以用于执行插入,更新或删除操作。这是使用ADO.NET命令和参数集合完成的。

对于ASP.NET应用程序中的Access数据库,更新是有问题的,因为Access数据库是一个纯文件,并且ASP.NET应用程序的默认帐户可能没有写数据库文件的权限。