- ASP.NET 教程
- ASP.NET - 首页
- ASP.NET - 简介
- ASP.NET - 环境
- ASP.NET - 生命周期
- ASP.NET - 第一个示例
- ASP.NET - 事件处理
- ASP.NET - 服务器端
- ASP.NET - 服务器控件
- ASP.NET - HTML 服务器控件
- ASP.NET - 客户端
- ASP.NET - 基本控件
- ASP.NET - 指令
- ASP.NET - 状态管理
- ASP.NET - 验证器
- ASP.NET - 数据库访问
- ASP.NET - ADO.net
- ASP.NET - 文件上传
- ASP.NET - 广告轮播
- ASP.NET - 日历控件
- ASP.NET - 多视图
- ASP.NET - 面板控件
- ASP.NET - AJAX 控件
- ASP.NET - 数据源
- ASP.NET - 数据绑定
- ASP.NET - 自定义控件
- ASP.NET - 个性化
- ASP.NET - 错误处理
- ASP.NET - 调试
- ASP.NET - LINQ
- ASP.NET - 安全性
- ASP.NET - 数据缓存
- ASP.NET - Web 服务
- ASP.NET - 多线程
- ASP.NET - 配置
- ASP.NET - 部署
- ASP.NET 资源
- ASP.NET - 快速指南
- ASP.NET - 有用资源
- ASP.NET - 讨论
ADO.NET
ADO.NET 在前端控件和后端数据库之间架起了一座桥梁。ADO.NET 对象封装了所有数据访问操作,控件与这些对象交互以显示数据,从而隐藏了数据移动的细节。
下图概览了 ADO.NET 对象
DataSet 类
数据集表示数据库的一个子集。它没有与数据库的持续连接。要更新数据库,需要重新连接。DataSet 包含 DataTable 对象和 DataRelation 对象。DataRelation 对象表示两个表之间的关系。
下表显示了 DataSet 类的一些重要属性
属性 | 描述 |
---|---|
CaseSensitive | 指示数据表中字符串比较是否区分大小写。 |
Container | 获取组件的容器。 |
DataSetName | 获取或设置当前数据集的名称。 |
DefaultViewManager | 返回数据集中的数据视图。 |
DesignMode | 指示组件当前是否处于设计模式。 |
EnforceConstraints | 指示在尝试任何更新操作时是否遵循约束规则。 |
事件 | 获取附加到此组件的事件处理程序列表。 |
ExtendedProperties | 获取与 DataSet 关联的自定义用户信息集合。 |
HasErrors | 指示是否存在任何错误。 |
IsInitialized | 指示 DataSet 是否已初始化。 |
Locale | 获取或设置用于在表内比较字符串的区域性信息。 |
Namespace | 获取或设置 DataSet 的命名空间。 |
Prefix | 获取或设置一个 XML 前缀,该前缀为 DataSet 的命名空间指定别名。 |
Relations | 返回 DataRelation 对象的集合。 |
Tables | 返回 DataTable 对象的集合。 |
下表显示了 DataSet 类的一些重要方法
方法 | 描述 |
---|---|
AcceptChanges | 接受自加载 DataSet 或上次调用此方法以来所做的所有更改。 |
BeginInit | 开始 DataSet 的初始化。初始化在运行时发生。 |
Clear | 清除数据。 |
Clone | 复制 DataSet 的结构,包括所有 DataTable 架构、关系和约束。不复制任何数据。 |
Copy | 复制结构和数据。 |
CreateDataReader() | 返回一个 DataTableReader,每个 DataTable 一个结果集,与表在 Tables 集合中出现的顺序相同。 |
CreateDataReader(DataTable[]) | 返回一个 DataTableReader,每个 DataTable 一个结果集。 |
EndInit | 结束数据集的初始化。 |
Equals(Object) | 确定指定的 Object 是否等于当前 Object。 |
Finalize | 释放资源并执行其他清理操作。 |
GetChanges | 返回 DataSet 的副本,其中包含自加载或调用 AcceptChanges 方法以来所做的所有更改。 |
GetChanges(DataRowState) | 获取 DataSet 的副本,其中包含自加载或调用 AcceptChanges 方法以来所做的所有更改,并按 DataRowState 过滤。 |
GetDataSetSchema | 获取 DataSet 的 XmlSchemaSet 副本。 |
GetObjectData | 使用序列化 DataSet 所需的数据填充序列化信息对象。 |
GetType | 获取当前实例的类型。 |
GetXML | 返回数据的 XML 表示形式。 |
GetXMLSchema | 返回数据的 XML 表示形式的 XSD 架构。 |
HasChanges() | 获取一个值,该值指示 DataSet 是否有更改,包括新行、已删除行或已修改行。 |
HasChanges(DataRowState) | 获取一个值,该值指示 DataSet 是否有更改,包括新行、已删除行或已修改行,并按 DataRowState 过滤。 |
IsBinarySerialized | 检查 DataSet 的序列化表示形式的格式。 |
Load(IDataReader, LoadOption, DataTable[]) | 使用提供的 IDataReader 从数据源填充 DataSet,使用 DataTable 实例数组提供架构和命名空间信息。 |
Load(IDataReader, LoadOption, String[]) | 使用提供的 IDataReader 从数据源填充 DataSet,使用字符串数组为 DataSet 中的表提供名称。 |
Merge() | 将数据与来自另一个 DataSet 的数据合并。此方法具有不同的重载形式。 |
ReadXML() | 将 XML 架构和数据读取到 DataSet 中。此方法具有不同的重载形式。 |
ReadXMLSchema(0) | 将 XML 架构读取到 DataSet 中。此方法具有不同的重载形式。 |
RejectChanges | 回滚自上次调用 AcceptChanges 以来所做的所有更改。 |
WriteXML() | 从 DataSet 写入 XML 架构和数据。此方法具有不同的重载形式。 |
WriteXMLSchema() | 将 DataSet 的结构作为 XML 架构写入。此方法具有不同的重载形式。 |
DataTable 类
DataTable 类表示数据库中的表。它具有以下重要属性;除了 PrimaryKey 属性外,大多数属性都是只读属性
属性 | 描述 |
---|---|
ChildRelations | 返回子关系的集合。 |
Columns | 返回 Columns 集合。 |
Constraints | 返回 Constraints 集合。 |
DataSet | 返回父 DataSet。 |
DefaultView | 返回表的视图。 |
ParentRelations | 返回 ParentRelations 集合。 |
PrimaryKey | 获取或设置一组列作为表的主键。 |
Rows | 返回 Rows 集合。 |
下表显示了 DataTable 类的一些重要方法
方法 | 描述 |
---|---|
AcceptChanges | 提交自上次 AcceptChanges 以来所做的所有更改。 |
Clear | 清除表中的所有数据。 |
GetChanges | 返回 DataTable 的副本,其中包含自调用 AcceptChanges 方法以来所做的所有更改。 |
GetErrors | 返回包含错误的行数组。 |
ImportRows | 将新行复制到表中。 |
LoadDataRow | 查找并更新特定行,如果未找到任何行,则创建新行。 |
Merge | 将表与另一个 DataTable 合并。 |
NewRow | 创建一个新的 DataRow。 |
RejectChanges | 回滚自上次调用 AcceptChanges 以来所做的所有更改。 |
Reset | 将表重置为其原始状态。 |
Select | 返回 DataRow 对象数组。 |
DataRow 类
DataRow 对象表示表中的一行。它具有以下重要属性
属性 | 描述 |
---|---|
HasErrors | 指示是否存在任何错误。 |
Items | 获取或设置存储在特定列中的数据。 |
ItemArrays | 获取或设置行的所有值。 |
Table | 返回父表。 |
下表显示了 DataRow 类的一些重要方法
方法 | 描述 |
---|---|
AcceptChanges | 接受自上次调用此方法以来所做的所有更改。 |
BeginEdit | 开始编辑操作。 |
CancelEdit | 取消编辑操作。 |
Delete | 删除 DataRow。 |
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() 来创建表并将其添加到数据集的 Tables 集合中。
CreateStudentTable() 方法调用用户自定义方法 AddNewColumn() 和 AddNewRow() 来创建表的列和行,以及向行中添加数据。
页面执行后,将返回表中的行,如所示