登录 |  注册
首页 >  编程技术 >  .NET基础教程笔记集 >  ASP.NETADO.NET

ASP.NETADO.NET

ADO.NET

ADO.NET 提供了前端控件和后端数据库之间的桥梁。ADO.NET 对象封装了与数据显示对象相互作用的所有的数据存取操作和控件。因此便隐藏了数据移动的细节。

下列图表整体展示了 ADO.NET 对象:

DataSet 类

数据集代表了数据库的一个子集。它和数据库没有持续的连接。为了升级数据库需要进行重新连接。DataSet 包括了 DataTable 和 DataRelation 对象。DataRelation 对象代表了两张表之间的关系。

下表是 DataSet 类的一些重要属性:

属性 描述
CaseSensitive 说明和数据表进行对比的字符串是否区分大小写。
Container 为组件获取空间。
DataSetName 获取或者设置现有数据集合的名称。
DefaultViewManager 返回数据集合中的数据视图。
DesignMode 表明组件是否处于设计模式下。
EnforceConstraints 表明尝试上传文件时是否遵循限制条件。
Events 获取与本组件相关的事件处理器列表。
ExtendedProperties 获取与 DataSet 相关的自定义用户的信息的集合。
HasErrors 表明是否有任何错误。
IsInitialized 表明 DataSet 是否初始化。
Locale 获取或者设置用来和表比较字符串的信息。
Namespace 获取或者设置 DataSet 的命名空间。
Prefix 获取或者设置一个 XML 前缀,它是命名空间的别名。
Relations 返回 DataRelation 对象的集合。
Tables 返回 DataTable 对象的集合。

下表列出来 DataSet 类的一些重要方法:

方法 描述
AcceptChanges 接受所有由于装载 DataSet 或者这个方法的更改。
BeginInit 开始 DataSet 的初始化。该初始化发生在运行时。
Clear 清除数据。
Clone 克隆包括所有 DataTable 的结构、关系和限制在内的 DataSet 的结构。但是不克隆数据。
Copy 复制数据和结构。
CreateDataReader() 为每个 DataTable 返回带有一个结果集的 DataTableReader,顺序与 Tables 集合中表的显示顺序相同。
CreateDataReader(DataTable[]) 为每个 DataTable 返回带有一个结果集 DataTableReader。
EndInit 结束在窗体上使用或由另一个组件使用的 DataSet 的初始化。初始化发生在运行时。
Equals(Object) 确定指定的对象是否等于当前对象。
Finalize 释放资源执行其他清除。
GetChanges 获取 DataSet 的副本,该副本包含自加载以来或自上次调用 AcceptChanges 以来对该数据集进行的所有更改。
GetChanges(DataRowState) 获取由 DataRowState 筛选的 DataSet 的副本,该副本包含上次加载以来或调用 AcceptChanges 以来对该数据集进行的所有更改。
GetDataSetSchema 为 DataSet 获取 XmlSchemaSet 副本。
GetObjectData 用序列化 DataSet 所需的数据填充序列化信息对象。
GetType 获取当前实例的 Type。
GetXML 返回存储在 DataSet 中的数据的 XML 表示形式。
GetXMLSchema 返回存储在 DataSet 中的数据的 XML 表示形式的 XML 架构。
HasChanges() 获取一个值,该值指示 DataSet 是否有更改,包括新增行、已删除的行或已修改的行。
HasChanges(DataRowState) 获取一个值,该值指示 DataSet 是否有 DataRowState 被筛选的更改,包括新增行、已删除的行或已修改的行。
IsBinarySerialized 检查 DataSet 的序列化表示形式的格式。
Load(IDataReader, LoadOption, DataTable[]) 使用提供的 IDataReader 以数据源的值填充 DataSet,同时使用 DataTable 实例的数组提供架构和命名空间信息。
Load(IDataReader, LoadOption, String[]) 使用所提供的 IDataReader,并使用字符串数组为 DataSet 中的表提供名称,从而用来自数据源的值填充 DataSet。
Merge() 将指定的 DataSet、DataTable 或 DataRow 对象的数组合并到当前的 DataSet 或 DataTable 中。这种方法有不一样的重载形式。
ReadXML() 将 XML 架构和数据读入 DataSet。这种方法有不一样的重载形式。
ReadXMLSchema(0) 将 XML 架构读入 DataSet。这种方法有不一样的重载形式。
RejectChanges 回滚自创建 DataSet 以来或上次调用 DataSet.AcceptChanges 以来对其进行的所有更改。
WriteXML() 从 DataSet 写 XML 数据和架构。这种方法有不一样的重载形式。
WriteXMLSchema() 从 DataSet 写 XML 架构。这种方法有不一样的重载形式。

DataTable 类

DataTable 类代表了数据库中的表。它有如下的重要属性:大多数属性都是只读属性除了 PrimaryKey 属性:

属性 描述
ChildRelations 获取此 DataTable 的子关系的集合。
Columns 获取属于该表的列的集合。
Constraints 获取由该表维护的约束的集合。
DataSet 获取此表所属的 DataSet。
DefaultView 获取可能包括筛选视图或游标位置的表的自定义视图。
ParentRelations 获取该 DataTable 的父关系的集合。
PrimaryKey 获取或设置充当数据表主键的列的数组。
Rows 获取属于该表的行的集合。

下表列示出了一些 DataTable 类的重要方法:

方法 描述
AcceptChanges 提交自加载此 DataSet 或上次调用 AcceptChanges 以来对其进行的所有更改。
Clear 通过移除所有表中的所有行来清除任何数据的 DataSet。
GetChanges 获取 DataSet 的副本,该副本包含自上次加载以来或自调用 AcceptChanges 以来对该数据集进行的所有更改。
GetErrors 获取包含错误的 DataRow 对象的数组。
ImportRows 将 DataRow 复制到 DataTable 中,保留任何属性设置以及初始值和当前值。
LoadDataRow 查找和更新特定行。 如果找不到任何匹配行,则使用给定值创建新行。
Merge 将指定的 DataSet、DataTable 或 DataRow 对象的数组合并到当前的 DataSet 或 DataTable 中。
NewRow 创建与该表具有相同架构的新 DataRow。
RejectChanges 回滚自该表加载以来或上次调用 AcceptChanges 以来对该表进行的所有更改。
Reset 清除所有表并从 DataSet 中删除所有关系、外部约束和表。 子类应重写 Reset,以便将 DataSet 还原到其原始状态。
Select 获取 DataRow 对象的数组。

DataRow 类

DataRow 对象代表了表中的一行,它有如下的重要属性:

属性 描述
HasErrors 表明是否有错误。
Items 获取或者设置存储在特定栏目的数据。
ItemArrays 获取或者设置本行中所有的值。
Table 返回父表。

下表列示了 DataRow 类的重要方法:

方法 描述
AcceptChanges 应用调用该方法后的所有更改。
BeginEdit 开始编辑操作。
CancelEdit 取消编辑操作。
Delete 删除数据行。
EndEdit 结束编辑操作。
GetChildRows 获取本行的子行。
GetParentRow 获取父行。
GetParentRows 获取 DataRow 的父行。
RejectChanges 回滚所有 AcceptChanges 调用后的更改。

DataAdapter 对象

DataAdapter 对象扮演 DataSet 对象与数据库之间的中间者。这有助于 DataSet 从多种数据库或者其他数据源获取数据。

DataReader 对象

DataReader 对象是 DataSet 和 DataAdapter 结合的备选。这个对象提供了对数据库中的数据记录的定向的存取。这些对象只适合只读存取,例如填充一个列表然后断开连接。

DbCommand 和 DbConnection 对象

DbConnection 对象代表了数据源的连接。这种连接可以在不一样的命令对象间共享。
DbCommand 对象代表了从检索或操纵数据发送到数据库的命令或者或者一个储存的进程。

例子

目前为止,我们已经应用了我们电脑中的表和数据库。在本案例中,我们将创建一个表,添加栏目,行和数据,并且用 GridView 控件显示表。

源文件代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="createdatabase._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >

   <head runat="server">
      <title>
         Untitled Page
      </title>
   </head>

   <body>
      <form id="form1" runat="server">

         <div>
            <asp:GridView ID="GridView1" runat="server">
            </asp:GridView>
         </div>

      </form>
   </body>

</html>

文件的代码如下:

namespace createdatabase
{
   public partial class _Default : System.Web.UI.Page
   {
      protected void Page_Load(object sender, EventArgs e)
      {
         if (!IsPostBack)
         {
            DataSet ds = CreateDataSet();
            GridView1.DataSource = ds.Tables["Student"];
            GridView1.DataBind();
         }
      }

      private DataSet CreateDataSet()
      {
         //creating a DataSet object for tables
         DataSet dataset = new DataSet();

         // creating the student table
         DataTable Students = CreateStudentTable();
         dataset.Tables.Add(Students);
         return dataset;
      }

      private DataTable CreateStudentTable()
      {
         DataTable Students = new DataTable("Student");

         // adding columns
         AddNewColumn(Students, "System.Int32", "StudentID");
         AddNewColumn(Students, "System.String", "StudentName");
         AddNewColumn(Students, "System.String", "StudentCity");

         // adding rows
         AddNewRow(Students, 1, "M H Kabir", "Kolkata");
         AddNewRow(Students, 1, "Shreya Sharma", "Delhi");
         AddNewRow(Students, 1, "Rini Mukherjee", "Hyderabad");
         AddNewRow(Students, 1, "Sunil Dubey", "Bikaner");
         AddNewRow(Students, 1, "Rajat Mishra", "Patna");

         return Students;
      }

      private void AddNewColumn(DataTable table, string columnType, string  columnName)
      {
         DataColumn column = table.Columns.Add(columnName,  Type.GetType(columnType));
      }

      //adding data into the table
      private void AddNewRow(DataTable table, int id, string name, string city)
      {
         DataRow newrow = table.NewRow();
         newrow["StudentID"] = id;
         newrow["StudentName"] = name;
         newrow["StudentCity"] = city;
         table.Rows.Add(newrow);
      }
   }
}

当你执行程序时,观察以下几方面:

  • 程序首先创建应一个数据集合然后用 GridView 控件的 DataBind() 方法约束它。
  • Createdataset() 方法是用户定义功能,它可以创建一个新的 DataSet 对象并且调用其他的用户定义的 CreateStudentTable() 方法来创建表格然后将他们添加到数据集合的表集合中。
  • CreateStudentTable() 方法调用用户定义的 AddNewColumn() 和 AddNewRow() 方法来创建表的栏目和行同时向行中添加数据。
    当页面得到执行,它返回的表的行如下图所示:

上一篇: 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#提供了以下几种循环类型
学习大纲