Asp.net 简明教程
ASP.NET - Data Sources
数据源控件与数据绑定控件交互并隐藏了复杂的数据绑定进程。这些是向数据绑定控件提供数据的工具,并支持执行插入、删除、排序和更新等操作。
每个数据源控件都封装了一个特定的数据提供程序——关系数据库、XML 文档或自定义类,并帮助进行以下操作:
-
Managing connection
-
Selecting data
-
管理分页、缓存等展示方面。
-
Manipulating data
ASP.NET 中有许多数据源控件可用于从 SQL Server、ODBC 或 OLE DB 服务器、XML 文件和业务对象访问数据。
根据数据类型,这些控件可以分为两类:
-
Hierarchical data source controls
-
Table-based data source controls
用于分级数据的数据源控件:
-
XMLDataSource - 它允许绑定到 XML 文件和有或没有架构信息的字符串。
-
SiteMapDataSource - 它允许绑定到提供站点地图信息的提供程序。
用于表格数据的数据源控件:
Data source controls |
Description |
SqlDataSource |
它表示与 ADO.NET 数据提供程序的连接,该提供程序返回 SQL 数据,包括可通过 OLEDB 和 ODBC 访问的数据源。 |
ObjectDataSource |
它允许绑定到返回数据的自定义 .Net 业务对象。 |
LinqdataSource |
它允许绑定到 Linq-to-SQL 查询(仅受 ASP.NET 3.5 支持)的结果。 |
AccessDataSource |
它表示与 Microsoft Access 数据库的连接。 |
Data Source Views
数据源视图是 DataSourceView 类的对象。它表示针对不同数据操作(如排序、筛选等)对数据进行自定义的视图。
DataSourceView 类作为所有数据源视图类的基类,而这些类定义了数据源控件的功能。
下表提供了 DataSourceView 类的属性:
Properties |
Description |
CanDelete |
指示是否允许在底层数据源上进行删除。 |
CanInsert |
指示是否允许在底层数据源上进行插入。 |
CanPage |
指示是否允许在底层数据源上进行分页。 |
CanRetrieveTotalRowCount |
指示是否提供总行数信息。 |
CanSort |
指示数据是否可以排序。 |
CanUpdate |
指示是否允许在底层数据源上进行更新。 |
Events |
获取数据源视图的事件处理程序委托列表。 |
Name |
Name of the view. |
下表提供了 DataSourceView 类的作用:
Methods |
Description |
CanExecute |
确定是否可以执行指定命令。 |
ExecuteCommand |
Executes the specific command. |
ExecuteDelete |
对 DataSourceView 对象表示的数据列表执行删除操作。 |
ExecuteInsert |
对 DataSourceView 对象表示的数据列表执行插入操作。 |
ExecuteSelect |
从底层数据存储中获取数据列表。 |
ExecuteUpdate |
对 DataSourceView 对象表示的数据列表执行更新操作。 |
Delete |
对与视图关联的数据执行删除操作。 |
Insert |
对与视图关联的数据执行插入操作。 |
Select |
Returns the queried data. |
Update |
对与视图关联的数据执行更新操作。 |
OnDataSourceViewChanged |
Raises the DataSourceViewChanged event. |
RaiseUnsupportedCapabilitiesError |
通过 RaiseUnsupportedCapabilitiesError 方法调用以比较为 ExecuteSelect 操作请求的功能和视图所支持的功能。 |
The SqlDataSource Control
SqlDataSource 控件表示与关系数据库(如 SQL Server 或 Oracle 数据库)的连接,或通过 OLEDB 或开放式数据库连接 (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" />
对基础数据的各种数据操作的配置取决于数据源控件的各种属性(属性组)。
下表提供了 SqlDataSource 控件的相关属性集,它提供了控件的编程接口:
Property Group |
Description |
DeleteCommand, DeleteParameters, DeleteCommandType |
获取或设置用于删除基础数据中行的 SQL 语句、参数和类型。 |
FilterExpression, FilterParameters |
获取或设置数据筛选字符串和参数。 |
InsertCommand, InsertParameters, InsertCommandType |
获取或设置用于向基础数据库中插入行的 SQL 语句、参数和类型。 |
SelectCommand, SelectParameters, SelectCommandType |
获取或设置用于从基础数据库中检索行的 SQL 语句、参数和类型。 |
SortParameterName |
获取或设置命令存储过程将用于对数据排序的输入参数的名称。 |
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>
The ObjectDataSource Control
ObjectDataSource 控件使用户定义的类能够将自身方法的输出与数据绑定控件关联。此类的编程接口几乎与 SqlDataSource 控件相同。
以下是有约束业务对象绑定的两个重要方面:
-
可绑定的类应具有默认构造函数,应无状态,并应具有可映射到选择、更新、插入和删除语义的方法。
-
该对象必须一次更新一个项目,不支持批量操作。
让我们直接进入一个示例,使用该控件。Student 类是与对象数据源一起使用的类。此类有三个属性:学生 ID、姓名和城市。它有一个默认构造函数和用于检索数据 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;
}
}
按以下步骤将对象与对象数据源绑定并检索数据:
-
创建一个新网站。
-
通过右键单击解决方案资源管理器中的项目、添加类模板并将上述代码置于其中,为其添加一个类 (Students.cs)。
-
构建解决方案,以便应用程序可以使用对类的引用。
-
在 Web 窗体中放置一个对象数据源控件。
-
通过选择对象来配置数据源。
-
为数据上的不同操作选择一个数据方法。在此示例中,只有一种方法。
-
在页面上放置一个数据绑定控件(如网格视图),并将其底层数据源选择为对象数据源。
-
在此阶段,设计视图应如下所示:
-
运行项目,它从 students 类中检索硬编码元组。
The AccessDataSource Control
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 应用程序的默认帐户可能没有权限写入数据库文件。