ADO.NET提供了前端控件和后端数据库之间的桥梁. ADO.NET对象封装了所有数据访问操作,控件与这些对象交互以显示数据,从而隐藏了数据移动的细节.
下图显示了ADO.NET对象一目了然:
数据集表示数据库的子集.它没有与数据库的连续连接.要更新数据库,需要重新连接. DataSet包含DataTable对象和DataRelation对象. DataRelation对象表示两个表之间的关系.
下表显示了DataSet类的一些重要属性:
属性 | 描述 |
---|---|
CaseSensitive | 指示数据表中的字符串比较是否区分大小写. |
Container | 获取组件的容器. |
DataSetName | 获取或设置当前数据集的名称. |
DefaultViewManager | 返回数据集中的数据视图. |
DesignMode | 指示组件当前是否处于设计模式. |
EnforceConstraints | 指示在尝试任何更新操作时是否遵循约束规则离开. |
Events | 获取附加到的事件处理程序列表这个组件. |
ExtendedProperties | 获取与之关联的自定义用户信息的集合数据集. |
HasErrors | 表示是否有任何错误. |
IsInitialized | 表示DataSet是否已初始化. |
Locale | 获取或设置用于比较表中字符串的区域设置信息. |
Namespace | 获取或设置DataSet的命名空间. |
Prefix | 获取或设置一个XML前缀,该前缀将数据集的命名空间别名. |
Relations | 返回DataRelation对象的集合. |
Tables | 返回DataTable对象的集合. |
下表显示了DataSet类的一些重要方法:
Methods | 描述 |
---|---|
AcceptChanges | 接受自DataSet以来所做的所有更改加载或调用此方法. |
BeginInit | 开始初始化数据集.初始化在运行时发生. |
Clear | 清除数据. |
Clone | 复制DataSet的结构,包括所有DataTable模式,关系,和约束.不复制任何数据. |
Copy | 复制结构和数据. |
CreateDataReader() | 返回一个DataTableReader,每个DataTable有一个结果集,与表中显示的表序列相同. |
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使用DataTable实例数组填充来自数据源的值,以提供架构和命名空间信息. |
Load(IDataReader,LoadOption,String []) | 使用提供的IDataReader使用数据源中的值填充DataSet,使用字符串数组为DataSet中的表提供名称. |
Merge() | 将数据与来自另一个DataSet的数据合并.此方法具有不同的重载形式. |
ReadXML() | 读取XML架构和数据进入DataSet.此方法具有不同的重载形式. |
ReadXMLSchema(0) | 读取XML模式进入DataSet.此方法具有不同的重载形式. |
RejectChanges | 回滚所做的所有更改自上次调用AcceptChanges以来. |
WriteXML() | 写入XML来自DataSet的架构和数据.此方法具有不同的重载形式. |
WriteXMLSchema() | 写入结构DataSet作为XML架构.此方法具有不同的重载形式. |
DataTable class表示数据库中的表.它具有以下重要特性;大多数这些属性是除了PrimaryKey属性之外的只读属性:
属性 | 描述 |
---|---|
ChildRelations | 返回子关系的集合. |
Columns | 返回Columns集合. |
Constraints | 返回Constraints集合. |
DataSet | 返回父数据集. |
DefaultView | 返回表的视图. |
ParentRelations | 返回ParentRelations集合. |
PrimaryKey | 获取或设置列数组作为表的主键. |
Rows | 返回Rows集合. |
下表显示了DataTable类的一些重要方法:
方法 | 描述 |
---|---|
AcceptChanges | 提交自上次AcceptChanges以来的所有更改. |
Clear | 清除表格中的所有数据. |
GetChanges | 返回自调用AcceptChanges方法以来所做的所有更改的DataTable副本. |
GetErrors | 返回有错误的行数组. |
ImportRows | 将新行复制到表中. |
LoadDataRow | 查找并更新特定行,或创建一个新行,如果找不到则. |
Merge | 将表与另一个DataTable合并. |
NewRow | 创建一个新的DataRow. |
RejectChanges | 回滚自上次调用AcceptChanges以来所做的所有更改. |
Reset | 将表重置为原始状态. |
Select | 返回DataRow对象数组. |
DataRow对象表示表中的一行.它具有以下重要属性:
属性 | 描述 |
---|---|
HasErrors | 表示是否有任何错误. |
Items | 获取或设置存储在特定列中的数据. |
ItemArrays | 获取或设置该行的所有值. |
Table | 返回父表. |
下表显示DataRow类的一些重要方法:
方法 | 描述 |
---|---|
AcceptChanges | 接受自调用此方法以来所做的所有更改. |
BeginEdit | 开始编辑操作. |
CancelEdit | 取消编辑操作. |
Delete | 删除DataRow. |
EndEdit | 结束编辑操作. |
GetChildRows | 获取此行的子行. |
GetParentRow | 获取父行. |
GetParentRows | 获取DataRow对象的父行. |
RejectChanges | 回滚自上次调用AcceptChanges以来所做的所有更改. |
DataAdapter对象充当DataSet对象和数据库之间的中介.这有助于数据集包含来自多个数据库或其他数据源的数据.
DataReader对象是DataSet的替代方案, DataAdapter组合.此对象提供对数据库中数据记录的面向连接的访问.这些对象适用于只读访问,例如填充列表然后断开连接.
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()来创建表的列和行以及向行添加数据.
执行页面时,它返回表格的行,如下所示: