登录 |  注册
首页 >  编程技术 >  .NET基础教程笔记集 >  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 控件 描述
SqlDataSource 它表示到返回 SQL 数据的 ADO.NET data provider 的连接,包括通过 OLEDB 和 QDBC 可获得的 data sources。
ObjectDataSource 它允许绑定一个返回数据的自定义的 .Net business 对象
LinqdataSource 它允许绑定 Linq-t0-SQL 查询的结果。(仅由 ASP.NET 3.5 支持)
AccessDataSource 它表示到 Microsoft Access 数据库的连接。

Data Source 视图

Data source 视图是 DataSourceView 类的对象,它代表一个自定义的为不一样数据操作如排序,过滤等而设计的数据视图。

DataSourceView 类作为所有 data source 视图类的基本类而使用,它定义了 data source 控件的性能。

以下表格提供了 DataSourceView 类的属性:

属性 描述
CanDelete 表示是否允许删除潜在的 data source。
CanInsert 表示是否允许插入潜在的 data source。
CanPage 表示是否允许给潜在的 data source 分页。
CanRetrieveTotalRowCount 表示总的行信息能否获得。
CanSort 表示数据是否能排序。
CanUpdate 表示是否允许在潜在的 data source 上更新。
Events 获得 data source 视图代表的事件句柄的列表。
Name 视图的名字。

以下的表格提供了 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 或 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 控件的属性集,它提供了控件的编程接口:

属性组 描述
DeleteCommand,
DeleteParameters,
DeleteCommandType
获取或设置 SQL 语句,参数和在潜在数据中删除行的类型。
FilterExpression,
FilterParameters
获取并设置数据过滤字符串和参数。
InsertCommand,
InsertParameters,
InsertCommandType
获取或设置 SQL 语句,参数和在潜在数据中插入行的类型。
SelectCommand,
SelectParameters,
SelectCommandType
获取或设置 SQL 语句,参数和在潜在数据中检索行的类型。
SortParameterName 获取或设置一个输入参数的名字,它将被命令存储的过程用来给数据排序。
UpdateCommand,
UpdateParameters,
UpdateCommandType
获取或设置 SQL 语句,参数和在潜在数据中更新行的类型。

以下的代码片段展示了能被用来做数据操作的 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。

1

  • 给不一样的数据操作选择数据方法。在这个例子中,仅有一个方法。

2

  • 在页面上放置一个 data bound 控件比如 grid view 并且选择 data source 对象作为潜在的 data source。

3

  • 在这个阶段,设计视图应该像以下这样:

4

  • 运行项目,它检索了 students 类中的硬编码的元祖。

5

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 应用程序账户可能有写数据库文件的权限。

上一篇: ASP.NET验证器
下一篇: ASP.NET数据库存取
推荐文章
  • 项目中,有些函数需要处理某个服务的返回结果,而在对函数单元测试的时候,又不能启动那些服务,这里就可以利用Mockito工具,其中有如下三种注解:@InjectMocks:创建一个实例,简单的说是这个Mock可以调用真实代码的方法,其余用@Mock(或@Spy)注解创建的mock将被注入到用该实例中。
  • 雪花算法(Snowflake)是由Twitter开发的一种分布式ID生成算法,旨在为分布式系统提供一种简单而有效的方式,以生成全局唯一、有序且可排序的64位整数ID。这种ID通常用作数据库记录的主键或其他需要唯一标识符的场景。雪花算法生成的64位ID结构如下:最高位(第64位):固定为0,因为64位
  • 在HTML中,如果你想让一个输入框(input元素)不可编辑,你可以通过设置其readonly属性来实现。示例如下:input type="text" value="此处内容不可编辑" readonly在上述代码中,readonly属性使得用户无法修改输入框中的内容。另外,如果你希望输入框完全不可交
  • ASP.NET教程ASP.NET又称为ASP+,基于.NETFramework的Web开发平台,是微软公司推出的新一代脚本语言。ASP.NET是一个使用HTML、CSS、JavaScript和服务器脚本创建网页和网站的开发框架。ASP.NET支持三种不一样的开发模式:WebPages(Web页面)、
  • C# 判断判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。下面是大多数编程语言中典型的判断结构的通常形式:判断语句C#提供了以下类型的判断语句。点击链接查看每个语句的细节。语句描述if语句一个 if语句 由一个布尔表达式后跟
  • C#循环有的时候,可能需要多次执行同一块代码。通常情况下,语句是顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。编程语言提供了允许更为复杂的执行路径的多种控制结构。循环语句允许我们多次执行一个语句或语句组,下面是大多数编程语言中循环语句的通常形式:循环类型C#提供了以下几种循环类型
学习大纲