当前位置: 首页 > 文档资料 > ASP.NET 中文教程 >

数据库访问(Database Access)

优质
小牛编辑
145浏览
2023-12-01

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结果