Asp.net 简明教程
ADO.NET
ADO.NET 在前端控件和后端数据库之间提供了桥梁。ADO.NET 对象封装了所有数据访问操作,而控件与这些对象交互,以显示数据,从而隐藏了数据移动的详细信息。
下图一目了然地显示了 ADO.NET 对象:
The DataSet Class
数据集表示数据库的一个子集。它与数据库没有连续的连接。若要更新数据库,则需要重新连接。DataSet 包含 DataTable 对象和 DataRelation 对象。DataRelation 对象表示两个表之间的关系。
下表显示了 DataSet 类的若干重要属性:
Properties |
Description |
CaseSensitive |
指示数据表内的字符串比较是否区分大小写。 |
Container |
获取组件容器。 |
DataSetName |
获取或设置当前数据集的名称。 |
DefaultViewManager |
返回数据集中数据的视图。 |
DesignMode |
指示组件是否当前处于设计模式。 |
EnforceConstraints |
指示在尝试任何更新操作时是否遵循约束规则。 |
Events |
获取附加到此组件的事件处理程序列表。 |
ExtendedProperties |
获取与 DataSet 关联的自定义用户信息集合。 |
HasErrors |
指示是否有任何错误。 |
IsInitialized |
指示 DataSet 是否已初始化。 |
Locale |
获取或设置用于比较表内字符串的区域设置信息。 |
Namespace |
获取或设置 DataSet 的命名空间。 |
Prefix |
获取或设置别名 DataSet 命名空间的 XML 前缀。 |
Relations |
返回 DataRelation 对象集合。 |
Tables |
返回 DataTable 对象集合。 |
下表显示了 DataSet 类的若干重要方法:
Methods |
Description |
AcceptChanges |
接受自 DataSet 加载或此方法被调用以来所做的所有更改。 |
BeginInit |
开始初始化 DataSet。初始化将在运行时发生。 |
Clear |
Clears data. |
Clone |
复制 DataSet 的结构,包括所有 DataTable 架构、关系和约束。不复制任何数据。 |
Copy |
复制结构和数据。 |
CreateDataReader() |
返回一个 DataTableReader,每个 DataTable 有一个结果集,顺序与表出现在 Tables 集合中的顺序相同。 |
CreateDataReader(DataTable[]) |
返回一个 DataTableReader,每个 DataTable 有一个结果集。 |
EndInit |
结束数据集的初始化。 |
Equals(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() |
写入 XML 架构和数据以从 DataSet 中。此方法有不同的重载形式。 |
WriteXMLSchema() |
以 XML 架构的形式写入 DataSet 的结构。此方法有不同的重载形式。 |
The DataTable Class
DataTable 类表示数据库中的表。它有以下重要属性;这些属性大多是只读属性,除了 PrimaryKey 属性:
Properties |
Description |
ChildRelations |
返回子关系集合。 |
Columns |
Returns the Columns collection. |
Constraints |
Returns the Constraints collection. |
DataSet |
Returns the parent DataSet. |
DefaultView |
返回表视图。 |
ParentRelations |
Returns the ParentRelations collection. |
PrimaryKey |
获取或设置一组列作为表的唯一键。 |
Rows |
Returns the Rows collection. |
下表显示了 DataTable 类的部分重要方法:
Methods |
Description |
AcceptChanges |
提交自最后一次 AcceptChanges 以来所做的所有更改。 |
Clear |
清除表中的所有数据。 |
GetChanges |
返回一个 DataTable 副本,其中包含自调用 AcceptChanges 方法以来所做的所有更改。 |
GetErrors |
返回一个带有错误的行数组。 |
ImportRows |
将新行复制到表中。 |
LoadDataRow |
查找并更新特定行,或创建新行,如果找不到。 |
Merge |
将表与其他 DataTable 合并。 |
NewRow |
Creates a new DataRow. |
RejectChanges |
回滚自最后一次调用 AcceptChanges 以来所做的所有更改。 |
Reset |
将表重置为其原始状态。 |
Select |
返回一个 DataRow 对象数组。 |
The DataRow Class
DataRow 对象表示表中的一行。它具有以下重要属性:
Properties |
Description |
HasErrors |
指示是否有任何错误。 |
Items |
获取或设置存储在特定列中的数据。 |
ItemArrays |
获取或设置行的所有值。 |
Table |
Returns the parent table. |
下表显示了 DataRow 类的部分重要方法:
Methods |
Description |
AcceptChanges |
接受此方法调用后做出的所有更改。 |
BeginEdit |
Begins edit operation. |
CancelEdit |
Cancels edit operation. |
Delete |
Deletes the DataRow. |
EndEdit |
Ends the edit operation. |
GetChildRows |
获取此行的子行。 |
GetParentRow |
Gets the parent row. |
GetParentRows |
获取 DataRow 对象的父行。 |
RejectChanges |
回滚自最后一次调用 AcceptChanges 以来所做的所有更改。 |
The DataReader Object
DataReader 对象是 DataSet 和 DataAdapter 组合的备选方案。此对象提供面向连接的数据库中数据记录的访问。这些对象适合于只读访问,比如填充一个列表然后断开连接。
DbCommand and DbConnection Objects
DbConnection 对象表示与数据源的连接。该连接可由不同的命令对象共享。
DbCommand 对象表示发送至数据库的命令或存储过程,用于检索或处理数据。
Example
到目前为止,我们已经使用了计算机中已存在的表和数据库。在本例中,我们将创建表、向其中添加列、行和数据,并使用 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() 来创建表的列和行,以及向行中添加数据。
执行该页面时,它返回如下图所示的表的行: