- ASP.NET 教程
- ASP.NET - 首页
- ASP.NET - 简介
- ASP.NET - 环境
- ASP.NET - 生命周期
- ASP.NET - 第一个示例
- ASP.NET - 事件处理
- ASP.NET - 服务器端
- ASP.NET - 服务器控件
- ASP.NET - HTML服务器控件
- ASP.NET - 客户端
- ASP.NET - 基本控件
- ASP.NET - 指令
- ASP.NET - 状态管理
- ASP.NET - 验证器
- ASP.NET - 数据库访问
- ASP.NET - ADO.NET
- ASP.NET - 文件上传
- ASP.NET - 广告轮播
- ASP.NET - 日历控件
- ASP.NET - 多视图
- ASP.NET - 面板控件
- ASP.NET - AJAX 控件
- ASP.NET - 数据源
- ASP.NET - 数据绑定
- ASP.NET - 自定义控件
- ASP.NET - 个性化设置
- ASP.NET - 错误处理
- ASP.NET - 调试
- ASP.NET - LINQ
- ASP.NET - 安全性
- ASP.NET - 数据缓存
- ASP.NET - Web 服务
- ASP.NET - 多线程
- ASP.NET - 配置
- ASP.NET - 部署
- ASP.NET 资源
- ASP.NET - 快速指南
- ASP.NET - 有用资源
- ASP.NET - 讨论
ASP.NET - 数据源
数据源控件与数据绑定控件交互,并隐藏复杂的数据绑定过程。这些工具为数据绑定控件提供数据,并支持执行插入、删除、排序和更新等操作。
每个数据源控件都封装了一个特定的数据提供程序——关系数据库、XML文档或自定义类,并有助于:
- 管理连接
- 选择数据
- 管理分页、缓存等呈现方面。
- 操作数据
ASP.NET 中提供了许多数据源控件,用于从 SQL Server、ODBC 或 OLE DB 服务器、XML 文件和业务对象访问数据。
根据数据类型,这些控件可以分为两类:
- 分层数据源控件
- 基于表的 数据源控件
用于分层数据的 数据源控件:
XMLDataSource - 它允许绑定到 XML 文件和字符串,无论是否有架构信息。
SiteMapDataSource - 它允许绑定到提供站点地图信息的提供程序。
用于表格数据的 数据源控件:
数据源控件 | 描述 |
---|---|
SqlDataSource | 它表示与 ADO.NET 数据提供程序的连接,该提供程序返回 SQL 数据,包括可通过 OLEDB 和 ODBC 访问的数据源。 |
ObjectDataSource | 它允许绑定到返回数据的自定义 .Net 业务对象。 |
LinqDataSource | 它允许绑定到 Linq-to-SQL 查询的结果(仅 ASP.NET 3.5 支持)。 |
AccessDataSource | 它表示与 Microsoft Access 数据库的连接。 |
数据源视图
数据源视图是 DataSourceView 类的对象。它表示数据的自定义视图,用于不同的数据操作,如排序、过滤等。
DataSourceView 类作为所有数据源视图类的基类,定义了数据源控件的功能。
下表提供了 DataSourceView 类的属性:
属性 | 描述 |
---|---|
CanDelete | 指示是否允许在底层数据源上进行删除。 |
CanInsert | 指示是否允许在底层数据源上进行插入。 |
CanPage | 指示是否允许在底层数据源上进行分页。 |
CanRetrieveTotalRowCount | 指示总行数信息是否可用。 |
CanSort | 指示数据是否可以排序。 |
CanUpdate | 指示是否允许在底层数据源上进行更新。 |
事件 | 获取数据源视图的事件处理程序委托列表。 |
名称 | 视图的名称。 |
下表提供了 DataSourceView 类的 方法:
方法 | 描述 |
---|---|
CanExecute | 确定是否可以执行指定的命令。 |
ExecuteCommand | 执行特定命令。 |
ExecuteDelete | 对 DataSourceView 对象表示的数据列表执行删除操作。 |
ExecuteInsert | 对 DataSourceView 对象表示的数据列表执行插入操作。 |
ExecuteSelect | 从底层数据存储中获取数据列表。 |
ExecuteUpdate | 对 DataSourceView 对象表示的数据列表执行更新操作。 |
Delete | 对与视图关联的数据执行删除操作。 |
Insert | 对与视图关联的数据执行插入操作。 |
Select | 返回查询到的数据。 |
Update | 对与视图关联的数据执行更新操作。 |
OnDataSourceViewChanged | 引发 DataSourceViewChanged 事件。 |
RaiseUnsupportedCapabilitiesError | 由 RaiseUnsupportedCapabilitiesError 方法调用,以将 ExecuteSelect 操作请求的功能与视图支持的功能进行比较。 |
SqlDataSource 控件
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 控件的相关属性集,这些属性集提供了控件的编程接口:
属性组 | 描述 |
---|---|
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>
ObjectDataSource 控件
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 窗体中放置一个对象数据源控件。
通过选择对象来配置数据源。
为对数据的不同操作选择数据方法。在此示例中,只有一个方法。
在页面上放置一个数据绑定控件(如 GridView),并选择对象数据源作为其底层数据源。
在此阶段,设计视图应如下所示:
运行项目,它将从 Student 类中检索硬编码的元组。
AccessDataSource 控件
AccessDataSource 控件表示与 Access 数据库的连接。它基于 SqlDataSource 控件,并提供更简单的编程接口。以下代码片段提供了数据源的基本语法:
<asp:AccessDataSource ID="AccessDataSource1 runat="server" DataFile="~/App_Data/ASPDotNetStepByStep.mdb" SelectCommand="SELECT * FROM [DotNetReferences]"> </asp:AccessDataSource>
AccessDataSource 控件以只读模式打开数据库。但是,它也可以用于执行插入、更新或删除操作。这是使用 ADO.NET 命令和参数集合完成的。
对于 Access 数据库,从 ASP.NET 应用程序中进行更新是有问题的,因为 Access 数据库是一个普通文件,ASP.NET 应用程序的默认帐户可能没有写入数据库文件的权限。