数据源(Data Sources)
数据源控件与数据绑定控件交互并隐藏复杂的数据绑定过程。 这些工具为数据绑定控件提供数据,并支持插入,删除,排序和更新等操作的执行。
每个数据源控件包装特定的数据提供者关系数据库,XML文档或自定义类,并帮助:
- 管理连接
- 选择数据
- 管理表示方面,如分页,缓存等。
- 操纵数据
ASP.NET中有许多数据源控件可用于从SQL Server,ODBC或OLE DB服务器,XML文件和业务对象访问数据。
根据数据类型,这些控件可分为两类:
- 分层数据源控件
- 基于表的数据源控件
用于分层数据的数据源控件是:
XMLDataSource - 它允许绑定带有或不带有架构信息的XML文件和字符串。
SiteMapDataSource - 它允许绑定到提供站点地图信息的提供程序。
用于表格数据的数据源控件是:
数据源控件 | 描述 |
---|---|
SqlDataSource | 它表示与返回SQL数据的ADO.NET数据提供程序的连接,包括可通过OLEDB和ODBC访问的数据源。 |
ObjectDataSource | 它允许绑定到返回数据的自定义.Net业务对象。 |
LinqdataSource | 它允许绑定到Linq-to-SQL查询的结果(仅受ASP.NET 3.5支持)。 |
AccessDataSource | 它表示与Microsoft Access数据库的连接。 |
数据源视图
数据源视图是DataSourceView类的对象。 它代表不同数据操作(如排序,过滤等)的数据自定义视图。
DataSourceView类充当所有数据源视图类的基类,这些类定义数据源控件的功能。
下表提供了DataSourceView类的属性:
属性 | 描述 |
---|---|
CanDelete | 指示是否允许在基础数据源上进行删除。 |
CanInsert | 指示是否允许在基础数据源上插入。 |
CanPage | 指示是否允许在基础数据源上进行分页。 |
CanRetrieveTotalRowCount | 指示总行数信息是否可用。 |
CanSort | 指示是否可以对数据进行排序。 |
CanUpdate | 指示是否允许在基础数据源上进行更新。 |
Events | 获取数据源视图的事件处理程序委托列表。 |
Name | Name of the view. |
下表提供了DataSourceView类的方法:
方法 | 描述 |
---|---|
CanExecute | 确定是否可以执行指定的命令。 |
ExecuteCommand | Executes the specific command. |
ExecuteDelete | 对DataSourceView对象表示的数据列表执行删除操作。 |
ExecuteInsert | 对DataSourceView对象表示的数据列表执行插入操作。 |
ExecuteSelect | 从基础数据存储中获取数据列表。 |
ExecuteUpdate | 对DataSourceView对象表示的数据列表执行更新操作。 |
Delete | 对与视图关联的数据执行删除操作。 |
Insert | 对与视图关联的数据执行插入操作。 |
Select | 返回查询的数据。 |
Update | 对与视图关联的数据执行更新操作。 |
OnDataSourceViewChanged | Raises the DataSourceViewChanged event. |
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方法。
学生班:
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表单中。
通过选择对象来配置数据源。
为数据的不同操作选择一种数据方法。 在此示例中,只有一种方法。
在页面上放置数据绑定控件(如网格视图),并选择对象数据源作为其基础数据源。
在此阶段,设计视图应如下所示:
运行该项目,它从学生class中检索硬编码元组。
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应用程序的默认帐户可能没有写入数据库文件的权限。