📜  ADO.NET-教程点

📅  最后修改于: 2020-11-21 05:47:25             🧑  作者: Mango


ADO.NET在前端控件和后端数据库之间提供了桥梁。 ADO.NET对象封装了所有数据访问操作,并且控件与这些对象进行交互以显示数据,从而隐藏了数据移动的详细信息。

下图使ADO.NET对象一目了然:

ADO.Net对象

数据集类

数据集代表数据库的子集。它没有与数据库的连续连接。要更新数据库,需要重新连接。 DataSet包含DataTable对象和DataRelation对象。 DataRelation对象表示两个表之间的关系。

下表显示了DataSet类的一些重要属性:

Properties Description
CaseSensitive Indicates whether string comparisons within the data tables are case-sensitive.
Container Gets the container for the component.
DataSetName Gets or sets the name of the current data set.
DefaultViewManager Returns a view of data in the data set.
DesignMode Indicates whether the component is currently in design mode.
EnforceConstraints Indicates whether constraint rules are followed when attempting any update operation.
Events Gets the list of event handlers that are attached to this component.
ExtendedProperties Gets the collection of customized user information associated with the DataSet.
HasErrors Indicates if there are any errors.
IsInitialized Indicates whether the DataSet is initialized.
Locale Gets or sets the locale information used to compare strings within the table.
Namespace Gets or sets the namespace of the DataSet.
Prefix Gets or sets an XML prefix that aliases the namespace of the DataSet.
Relations Returns the collection of DataRelation objects.
Tables Returns the collection of DataTable objects.

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

Methods Description
AcceptChanges Accepts all changes made since the DataSet was loaded or this method was called.
BeginInit Begins the initialization of the DataSet. The initialization occurs at run time.
Clear Clears data.
Clone Copies the structure of the DataSet, including all DataTable schemas, relations, and constraints. Does not copy any data.
Copy Copies both structure and data.
CreateDataReader() Returns a DataTableReader with one result set per DataTable, in the same sequence as the tables appear in the Tables collection.
CreateDataReader(DataTable[]) Returns a DataTableReader with one result set per DataTable.
EndInit Ends the initialization of the data set.
Equals(Object) Determines whether the specified Object is equal to the current Object.
Finalize Free resources and perform other cleanups.
GetChanges Returns a copy of the DataSet with all changes made since it was loaded or the AcceptChanges method was called.
GetChanges(DataRowState) Gets a copy of DataSet with all changes made since it was loaded or the AcceptChanges method was called, filtered by DataRowState.
GetDataSetSchema Gets a copy of XmlSchemaSet for the DataSet.
GetObjectData Populates a serialization information object with the data needed to serialize the DataSet.
GetType Gets the type of the current instance.
GetXML Returns the XML representation of the data.
GetXMLSchema Returns the XSD schema for the XML representation of the data.
HasChanges() Gets a value indicating whether the DataSet has changes, including new, deleted, or modified rows.
HasChanges(DataRowState) Gets a value indicating whether the DataSet has changes, including new, deleted, or modified rows, filtered by DataRowState.
IsBinarySerialized Inspects the format of the serialized representation of the DataSet.
Load(IDataReader, LoadOption, DataTable[]) Fills a DataSet with values from a data source using the supplied IDataReader, using an array of DataTable instances to supply the schema and namespace information.
Load(IDataReader, LoadOption, String[]) Fills a DataSet with values from a data source using the supplied IDataReader, using an array of strings to supply the names for the tables within the DataSet.
Merge() Merges the data with data from another DataSet. This method has different overloaded forms.
ReadXML() Reads an XML schema and data into the DataSet. This method has different overloaded forms.
ReadXMLSchema(0) Reads an XML schema into the DataSet. This method has different overloaded forms.
RejectChanges Rolls back all changes made since the last call to AcceptChanges.
WriteXML() Writes an XML schema and data from the DataSet. This method has different overloaded forms.
WriteXMLSchema() Writes the structure of the DataSet as an XML schema. This method has different overloaded forms.

数据表类

DataTable类表示数据库中的表。它具有以下重要特性;这些属性中的大多数都是只读属性,但PrimaryKey属性除外:

Properties Description
ChildRelations Returns the collection of child relationship.
Columns Returns the Columns collection.
Constraints Returns the Constraints collection.
DataSet Returns the parent DataSet.
DefaultView Returns a view of the table.
ParentRelations Returns the ParentRelations collection.
PrimaryKey Gets or sets an array of columns as the primary key for the table.
Rows Returns the Rows collection.

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

Methods Description
AcceptChanges Commits all changes since the last AcceptChanges.
Clear Clears all data from the table.
GetChanges Returns a copy of the DataTable with all changes made since the AcceptChanges method was called.
GetErrors Returns an array of rows with errors.
ImportRows Copies a new row into the table.
LoadDataRow Finds and updates a specific row, or creates a new one, if not found any.
Merge Merges the table with another DataTable.
NewRow Creates a new DataRow.
RejectChanges Rolls back all changes made since the last call to AcceptChanges.
Reset Resets the table to its original state.
Select Returns an array of DataRow objects.

DataRow类

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

Properties Description
HasErrors Indicates if there are any errors.
Items Gets or sets the data stored in a specific column.
ItemArrays Gets or sets all the values for the row.
Table Returns the parent table.

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

Methods Description
AcceptChanges Accepts all changes made since this method was called.
BeginEdit Begins edit operation.
CancelEdit Cancels edit operation.
Delete Deletes the DataRow.
EndEdit Ends the edit operation.
GetChildRows Gets the child rows of this row.
GetParentRow Gets the parent row.
GetParentRows Gets parent rows of DataRow object.
RejectChanges Rolls back all changes made since the last call to AcceptChanges.

DataAdapter对象

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

DataReader对象

DataReader对象是DataSet和DataAdapter组合的替代方法。该对象提供对数据库中数据记录的面向连接的访问。这些对象适用于只读访问,例如填充列表然后断开连接。

DbCommand和DbConnection对象

DbConnection对象表示与数据源的连接。该连接可以在不同的命令对象之间共享。

DbCommand对象表示通过检索或操作数据发送到数据库的命令或存储过程。

到目前为止,我们已经使用了计算机中已经存在的表和数据库。在此示例中,我们将创建一个表,在其中添加列,行和数据,并使用GridView对象显示该表。

源文件代码如下:


         Untitled Page
      
   
   
   
      

文件后面的代码如下:

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