C#:DataSet用法详解第1页DataSet用法详细一、特点介绍1、处理脱机数据,在多层应用程序中很有用。2、可以在任何时候查看DataSet中任意行的内容,允许修改查询结果的方法。3、处理分级数据4、缓存更改5、XML的完整性:DataSet对象和XML文档几乎是可互换的。二、使用介绍1、创建DataSet对象:DataSetds=newDataSet("DataSetName");2、查看调用SqlDataAdapter.Fill创建的结构da.Fill(ds,"Orders");DataTabletbl=ds.Table[0];foreach(DataColumncolintbl.Columns)Console.WriteLine(col.ColumnName);3、查看SqlDataAdapter返回的数据①DataRow对象DataTabletbl=ds.Table[0];DataRowrow=tbl.Row[0];Console.WriteLine(ros["OrderID"]);②检查存储在DataRow中的数据DataTabletbl=row.Table;foreach(DataColumncolintbl.Columns)Console.WriteLine(row[col]);③检查DatTable中的DataRow对象foreach(DataRowrowintbl.Rows)DisplayRow(row);4、校验DataSet中的数据①校验DataColumn的属性:ReadOnly,AllowDBNull,MaxLength,Unique②DataTable对象的Constrains集合:UiqueConstraints,Primarykey,ForeignkeyConstraints通常不必刻意去创建ForeignkeyConstraints,因为当在DataSet的两个DataTable对象之间创建关系时会创建一个。③用SqlDataAdapter.Fill模式来检索模式信息5、编写代码创建DataTable对象①创建DataTable对象:DataTabletbl=newDataTable("TableName");②将DataTable添加到DataSet对象的Table集合DataSetds=newDataSet();DataTabletbl=newDataTable("Customers");ds.Tables.Add(tbl);DataSetds=newDataSet();DataTabletbl=ds.Tables.Add("Customers");C#:DataSet用法详解第2页DataTable对象只能存在于至多一个DataSet对象中。如果希望将DataTable添加到多个DataSet中,就必须使用Copy方法或Clone方法。Copy方法创建一个与原DataTable结构相同并且包含相同行的新DataTable;Clone方法创建一个与原DataTable结构相同,但没有包含任何行的新DataTable。③为DataTable添加列DataTabletbl=ds.Tables.Add("Orders");DataColumncol=tbl.Columns.Add("OrderID",typeof(int));col.AllowDBNull=false;col.MaxLength=5;col.Unique=true;tbl.PrimaryKey=newDataColumn[]{tbl.Columns["CustomersID"]};当设置主键时,AllowDBNull自动设置为False;④处理自动增量列DataSetds=newDataSet();DataTabletbl=ds.Tables.Add("Orders");DataColumncol=tbl.Columns.Add("OrderID",typeof(int));col.AutoIncrement=true;col.AutoIncrementSeed=-1;col.AutoIncrementStep=-1;col.ReadOnly=true;⑤添加基于表达式的列tbl.Columns.Add("ItemTotal",typeof(Decimal),"Quantity*UnitPrice");6、修改DataTable内容①添加新DataRowDataRowrow=ds.Tables["Customers"].NewRow();row["CustomerID"]="ALFKI";ds.Tables["Customers"].Rows.Add(row);object[]aValues={"ALFKI","Alfreds","Anders","030-22222"};da.Tables["Customers"].LoadDataRow(aValues,false);②修改当前行修改行的内容逼供内不会自动修改数据库中相应的内容,对行所做的修改被视为是随后将使用SqlDataAdapter对象来提交交给数据库的待定的更改。DataRowrowCustomer;rowCustomer=ds.Tables["Custoemrs"].Rows.Find("ANTON");if(rowCustomer==null)//没有查找客户else{rowCustomer["CompanyName"]="NewCompanyName";rowCustomer["ContactName"]="NewContactName";}//推荐使用这种方式DataRowrowCustomer;C#:DataSet用法详解第3页rowCustomer=ds.Tables["Custoemrs"].Rows.Find("ANTON");if(rowCustomer==null)//没有查找客户else{rowCustomer.BeginEdit();rowCustomer["CompanyName"]="NewCompanyName";rowCustomer["ContactName"]="NewContactName";rowCustomer.EndEdit();}//null表示不修改该列的数据obejct[]aCustomer={null,"NewCompanyName","NewContactName",null}DataRowrowCustomer;rowCustomer=ds.Tables["Customers"].Rows.Find("ALFKI");rowCustomer.ItemArray=aCustomer;③处理DataRow的空值//查看是否为空DataRowrowCustomer;rowCust...