- 第1节:ASP.NET 简介
- 第2节:ASP.NET 环境设置
- 第3节:ASP.NET 生命周期
- 第4节:ASP.NET 实例
- 第5节:ASP.NET 事件处理
- 第6节:ASP.NET 服务器端
- 第7节:ASP.NET ADO.NET
- 第8节:ASP.NET 服务器控件
- 第9节:ASP.NET 文件上传
- 第10节:ASP.NET HTML 服务器
- 第11节:ASP.NET 广告轮转器
- 第12节:ASP.NET 客户端
- 第13节:ASP.NET 日历
- 第14节:ASP.NET 基础控件
- 第15节:ASP.NET 多视图
- 第16节:ASP.NET 指令
- 第17节:ASP.NET Panel 控件
- 第18节:ASP.NET 管理状态
- 第19节:ASP.NET Ajax 控制
- 第20节:ASP.NET 验证器
- 第21节:ASP.NET 数据源
- 第22节:ASP.NET 数据库存取
- 第23节:ASP.NET 数据绑定
- 第24节:ASP.NET 自定义控件
- 第25节:ASP.NET 个性化
- 第26节:ASP.NET 异常处理
- 第27节:ASP.NET 调试
- 第28节:ASP.NET 语言集成查询
- 第29节:ASP.NET 安全性
- 第30节:ASP.NET 数据缓存
- 第31节:ASP.NET Web 服务
- 第32节:ASP.NET 多线程
- 第33节:ASP.NET 配置
- 第34节:ASP.NET 部署
ASP.NET 数据源
数据源
一个 data sourse 控件与数据绑定的控件相互作用,并隐藏了复杂的数据的联编过程。这些是提供数据给 data bound 控件的工具,并且支持如插入,删除和更新操作的执行。
每一个 data sourse 控件包裹了一个特殊的数据提供者相关的数据库,XML 文件,或者是自定义类,并且帮助:
- 管理连接
- 选择数据
- 管理像分页,缓存等的展示方面
- 操控数据
有许多可在 ASP.NET 中获得的 data sourse 控件,为从 SQL 服务器,ODBC 或者 OLE DB 服务器,从 XML 文件,和从业务对象中获得数据。
基于数据类型,这些控件能被分为两个种类:
- 分层的 data sourse 控件
- 基于表格的 data sourse 控件
用于分层数据的 data sourse 控件是:
- XMLDataSource - 它允许用或者不用模式信息绑定 XML 文件和字符串。
- SiteMapDataSource - 它允许绑定一个提供站点地图信息的提供者。
用作表格数据的 data source 控件是:
Data Source 视图
Data source 视图是 DataSourceView 类的对象,它代表一个自定义的为不同数据操作如排序,过滤等而设计的数据视图。
DataSourceView 类作为所有 data source 视图类的基本类而使用,它定义了 data source 控件的性能。
以下表格提供了 DataSourceView 类的属性:
以下的表格提供了 DataSourceView 类的方法:
SqlDataSource 控件
SqlDataSource 控件代表到相关数据库比如 SQL Server 或者 Oracle数据库,或者通过 OLEDB 或 Open Database Connectivity(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" />
在潜在的数据上配置不同的数据操作依赖于 data source 控件的不同属性(属性集)。
以下的表格提供了相关的 SqlDataSource 控件的属性集,它提供了控件的编程接口:
以下的代码片段展示了能被用来做数据操作的 data source 控件:
<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 控件使 user-defined 类能让它们方法的输出和 data bound 控件相连接。这个类的编程接口几乎和 SqlDataSource 控件相同。
以下是绑定客户对象的两个重要方面:
- 可绑定的类应该拥有一个默认的构造函数,它应该是无状态的,并且拥有能够映射到选择,更新,插入,和删除语意的方法。
- 对象必须一次更新一个项目,批处理操作是不支持的。
让我们直接到一个例子中来使用这个控件。student 类是被用来和一个 data source 对象一起使用的类。这个类有三个属性:a student id,name,和 city。它有一个默认的构造函数和一个检索数据的 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;
}
}
采取以下的步骤来将对线绑定到一个 data source 对象和检索数据:
- 创建一个新的网页。
- 通过右击 Solution Explorer 的项目来给它添加一个类(Student.cs),添加一个类模板,将上面的代码放在里面。
- 建立方法使得应用程序可以使用类的引用。
- 在网页表单中放置一个 data source 控件对象。
- 通过选择对象来配置 data source。
- 给不同的数据操作选择数据方法。在这个例子中,仅有一个方法。
- 在页面上放置一个 data bound 控件比如 grid view 并且选择 data source 对象作为潜在的 data source。
- 在这个阶段,设计视图应该像以下这样:
- 运行项目,它检索了 students 类中的硬编码的元祖。
AccessDataSource 控件
AccessDataSource 控件代表了到 Access 数据库的连接。它基于 SqlDataSource 控件并提供了更简单的编程接口。以下的代码片段提供了 data source 的基本语法:
<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 应用程序账户可能有写数据库文件的权限。