您的位置:首页 > 博客中心 > 数据库 >

C#与数据库访问技术总结(十六)之 DataSet对象

时间:2022-03-14 02:02

 

 

    DataSet对象模型中的各重要组件说明如下。

    1.DataRelationCollectionDataRelation

    DataRelation对象用来描述DataSet里各表之间的诸如主键和外键的关系,它使一个DataTable中的行与另一个DataTable中的行相关联,也可以标识DataSet中两个表的匹配列。

    DataRelationCollection是DataRelation对象的集合,用于描述整个DataSet对象里数据表之间的关系。

    2.ExtendedProperties

    DataSet、DataTable和DataColumn全部具有ExtendedProperties属性。可以在其中加入自定义信息,例如用于生成结果集的SQL语句或生成数据的时间。

3.DataTableCollectionDataTable

    在DataSet里,用DataTable对象来映射数据库里的表,而DataTableCollection用来管理DataSet下的所有DatabTable。

    DataTable具有以下常用属性。

    (1)TableName:用来获取或设置DataTable的名称。

    (2)DataSet:用来表示该DataTable从属于哪个DataSet。

    (3)Rows:用来表示该DataTable的DataRow对象的集合,也就是对应着相应数据表里的所用记录。

    程序员能通过此属性,依次访问DataTable里的每条记录。该属性有如下方法。

Add:把DataTable的AddRow方法创建的行追加到末尾。

InsertAt:把DataTable的AddRow方法创建的行追加到索引号指定的位置。

Remove:删除指定的DataRow对象,并从物理上把数据源里的对应数据删除。

RemoveAt:根据索引号,直接删除数据。

    (4)Columns:用来表示该DataTable的DataColumn对象的集合,通过此属性,能依次访问DataTable里的每个字段。

    DataTable具有以下常用方法。

DataRow NewRow()方法:该方法用来为当前的DataTable增加一个新行,返回表示行记录的DataRow对象,但该方法不会把创建好的DataRow添加到DataRows集合中,而是需要通过调用DataTable对象Rows属性的Add方法,才能完成添加动作。

DataRow [] Select()方法:该方法执行后,会返回一个DataRow对象组成的数组。

void Merge(DataTable table)方法:该方法能把参数中的DataTable和本DataTable合并。

void Load(DataReader reader)方法:该方法通过参数里的IdataReader对象,把对应数据源里的数据装载到DataTable里,以便后继操作。

void Clear()方法:该方法用来清除DataTable里的数据,通常在获取数据前调用。

void Reset()方法:该方法用宋重置DataTabl对象。

 

 上述代码的主要业务逻辑如下:

    (1)创建DataTable和DataColumn类型的对象,并把DataColumn对象的数据类型设置成System.Int32。

    也就是说,使用该DataColumn对象可以对应地接收int类型的字段数据。

    (2)把DataColumn对象添加到DataTable中。

    (3)依次创建5个DaaRow对象,同时通过for循环给其赋值。完成赋值后,将这5个DataRow对象添加到DataTable中。

    (4)使用AcceptChanges方法,实现DataColumn和DataRow对象的更新。

    (5)使用BeginEdit方法,开始编辑DataRow对象,使用EndEdit方法来表示编辑结束。

    使用DataTable、DataColumn和DmaRow对象访问数据的一般方式有以下几种。

    (1)使用Table名和Table索引来访问DataTable。为了提高代码的可读性,推荐使用Table名的方式来访问Table。代码如下:    

DataSet ds=new DataSet();
DataTable dt=new DataTble(" myTableName");
//向DataSet的Table里添加一个dataTable
ds.Tables.Add(dt);
//访问dataTable
//1 通过表名访问,推荐使用
ds.Tables["myTableName"].NewRow();
//2 通过索引访问,索引值从0开始,不推荐使用
ds.Tables[0].NewRow(); 

(2)使用Rows属性访问数据记录,例如:

   foreach(DataRow  row  in  table.Rows)
   {
       Row[0]=(int) row[0]+10;
   } 

 

(3)使用Rows属性,访问指定行的指定字段,例如:

//首先为DataTable对象创建一个数据列
DataTable table=new DataTable("table1");
DataColumn column=new DataColumn(" col1", Type.GetType("System.Int32"));
table.Columns.Add(column);
// 其次为DataTable添加行数据
newRow=table.NewRow();
newRow[0]=10;
table.Rows.Add(newRow);
//设置索引行是0,列名是col1的数据
table.Rows[0]["col1"]=100;
//设置索引行是0,索引列是0的数据,这种做法不推荐
//table.Rows[0][0]=100;

 

 

    (4)综合使用DataRow和DataColumn对象访问DataTable内的数据。

   从以下代码可以看出,DataTable对象中的Rows属性对应于它的DataRow对象,而Columns属性对应于DataColumn。

foreach(DataRow  dr  in  dt.Rows )
{
      foreach(DataColumn  dc  in  dt.Columns )
      {
           //用数组访问数据
           dr[dc]=100;
      }
}

 

 

 

热门排行

今日推荐

热门手游