登录 |  注册
首页 >  编程技术 >  .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数据库存取
推荐文章
  • ASP.NET教程ASP.NET又称为ASP+,基于.NETFramework的Web开发平台,是微软公司推出的新一代脚本语言。ASP.NET是一个使用HTML、CSS、JavaScript和服务器脚本创建网页和网站的开发框架。ASP.NET支持三种不一样的开发模式:WebPages(Web页面)、
  • C# 判断判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。下面是大多数编程语言中典型的判断结构的通常形式:判断语句C#提供了以下类型的判断语句。点击链接查看每个语句的细节。语句描述if语句一个 if语句 由一个布尔表达式后跟
  • C#循环有的时候,可能需要多次执行同一块代码。通常情况下,语句是顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。编程语言提供了允许更为复杂的执行路径的多种控制结构。循环语句允许我们多次执行一个语句或语句组,下面是大多数编程语言中循环语句的通常形式:循环类型C#提供了以下几种循环类型
  • C#数组(Array)数组是一个存储相同类型元素的固定大小的顺序集合。数组是用来存储数据的集合,一般认为数组是一个同一类型变量的集合。声明数组变量并不是声明number0、number1、...、number99一个个单独的变量,而是声明一个就像numbers这样的变量,然后使用numbers[0]
  • ASP.NET是一个由微软公司开发的用于构建Web应用程序的框架,它是.NETFramework的一部分。它提供了一种模型-视图-控制器(MVC)架构、Web表单以及最新的ASP.NETCore中的RazorPages等多种开发模式,可以用来创建动态网页和Web服务。以下是一些基础的ASP.NET编
  • 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。比如说,你的代码少了一个分号,那么运行出来结果是提示是错误java.lang.Error;如果你用System.out.println(11/0),那么你是因为你用0做了除数,会抛出java.lang.Arithmeti
学习大纲