目录

ASP.NET - 数据库访问( Database Access)

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前缀,该前缀对DataSet的命名空间进行别名。
Relations 返回DataRelation对象的集合。
Tables 返回DataTable对象的集合。

下表显示了DataSet类的一些重要方法:

方法 描述
AcceptChanges 接受自加载DataSet或调用此方法以来所做的所有更改。
BeginInit 开始DataSet的初始化。 初始化在运行时发生。
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使用数据源中的值填充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 返回子关系的集合。
ColumnsReturns the Columns collection.
ConstraintsReturns the Constraints collection.
DataSetReturns the parent DataSet.
DefaultView 返回表的视图。
ParentRelationsReturns the ParentRelations collection.
PrimaryKey 获取或设置列数组作为表的主键。
RowsReturns the Rows collection.

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

方法 描述
AcceptChanges 提交自上次AcceptChanges以来的所有更改。
Clear 清除表中的所有数据。
GetChanges 返回DataTable的副本,其中包含自调用AcceptChanges方法以来所做的所有更改。
GetErrors 返回有错误的行数组。
ImportRows 将新行复制到表中。
LoadDataRow 查找并更新特定行,或创建新行(如果未找到)。
Merge 将表与另一个DataTable合并。
NewRowCreates a new DataRow.
RejectChanges 回滚自上次调用AcceptChanges以来所做的所有更改。
Reset 将表重置为其原始状态。
Select 返回DataRow对象的数组。

DataRow类

DataRow对象表示表中的行。 它具有以下重要属性:

属性 描述
HasErrors 指示是否有任何错误。
Items 获取或设置存储在特定列中的数据。
ItemArrays 获取或设置行的所有值。
TableReturns the parent table.

下表显示了DataRow类的一些重要方法:

方法 描述
AcceptChanges 接受自调用此方法以来所做的所有更改。
BeginEdit 开始编辑操作。
CancelEdit 取消编辑操作。
DeleteDeletes the DataRow.
EndEdit 结束编辑操作。
GetChildRows 获取此行的子行。
GetParentRowGets the parent row.
GetParentRows 获取DataRow对象的父行。
RejectChanges 回滚自上次调用AcceptChanges以来所做的所有更改。

DataAdapter对象

DataAdapter对象充当DataSet对象和数据库之间的中介。 这有助于数据集包含来自多个数据库或其他数据源的数据。

DataReader对象

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()来创建表的列和行,以及向行添加数据。

执行页面时,它返回表格的行,如下所示:

ADO.Net结果
↑回到顶部↑
WIKI教程 @2018