资源预览内容
第1页 / 共13页
第2页 / 共13页
第3页 / 共13页
第4页 / 共13页
第5页 / 共13页
第6页 / 共13页
第7页 / 共13页
第8页 / 共13页
第9页 / 共13页
第10页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
C#:DataSet用法详解 第15页DataSet用法详细一、特点介绍1、处理脱机数据,在多层应用程序中很有用。2、可以在任何时候查看DataSet中任意行的内容,允许修改查询结果的方法。3、处理分级数据4、缓存更改5、XML的完整性:DataSet对象和XML文档几乎是可互换的。二、使用介绍1、创建DataSet对象:DataSet ds = new DataSet(DataSetName);2、查看调用SqlDataAdapter.Fill创建的结构da.Fill(ds,Orders);DataTable tbl = ds.Table0;foreach(DataColumn col in tbl.Columns)Console.WriteLine(col.ColumnName);3、查看SqlDataAdapter返回的数据DataRow对象DataTable tbl = ds.Table0;DataRow row = tbl.Row0;Console.WriteLine(rosOrderID);检查存储在DataRow中的数据DataTable tbl = row.Table;foreach(DataColumn col in tbl.Columns)Console.WriteLine(rowcol);检查DatTable中的DataRow对象foreach(DataRow row in tbl.Rows)DisplayRow(row);4、校验DataSet中的数据校验DataColumn的属性:ReadOnly,AllowDBNull,MaxLength,UniqueDataTable对象的Constrains集合:UiqueConstraints,Primarykey, ForeignkeyConstraints通常不必刻意去创建ForeignkeyConstraints,因为当在DataSet的两个DataTable对象之间创建关系时会创建一个。用SqlDataAdapter.Fill模式来检索模式信息5、编写代码创建DataTable对象创建DataTable对象:DataTable tbl = new DataTable(TableName);将DataTable添加到DataSet对象的Table集合DataSet ds = new DataSet();DataTable tbl = new DataTable(Customers);ds.Tables.Add(tbl);DataSet ds = new DataSet();DataTable tbl = ds.Tables.Add(Customers);DataTable对象只能存在于至多一个DataSet对象中。如果希望将DataTable添加到多个DataSet中,就必须使用Copy方法或Clone方法。Copy方法创建一个与原DataTable结构相同并且包含相同行的新DataTable;Clone方法创建一个与原DataTable结构相同,但没有包含任何行的新DataTable。为DataTable添加列DataTable tbl = ds.Tables.Add(Orders);DataColumn col =tbl.Columns.Add(OrderID,typeof(int);col.AllowDBNull = false;col.MaxLength = 5;col.Unique = true;tbl.PrimaryKey = new DataColumntbl.ColumnsCustomersID;当设置主键时,AllowDBNull自动设置为False;处理自动增量列DataSet ds = new DataSet();DataTable tbl = ds.Tables.Add(Orders);DataColumn col = 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内容添加新DataRowDataRow row = ds.TablesCustomers.NewRow();rowCustomerID = ALFKI;ds.TablesCustomers.Rows.Add(row);object aValues =ALFKI,Alfreds,Anders,030-22222;da.TablesCustomers.LoadDataRow(aValues,false);修改当前行修改行的内容逼供内不会自动修改数据库中相应的内容,对行所做的修改被视为是随后将使用SqlDataAdapter对象来提交交给数据库的待定的更改。DataRow rowCustomer;rowCustomer = ds.TablesCustoemrs.Rows.Find(ANTON);if(rowCustomer = null) /没有查找客户else rowCustomerCompanyName =NewCompanyName; rowCustomerContactName =NewContactName;/推荐使用这种方式DataRow rowCustomer;rowCustomer = ds.TablesCustoemrs.Rows.Find(ANTON);if(rowCustomer = null) /没有查找客户else rowCustomer.BeginEdit(); rowCustomerCompanyName =NewCompanyName; rowCustomerContactName =NewContactName; rowCustomer.EndEdit();/null表示不修改该列的数据obejct aCustomer =null,NewCompanyName,NewContactName,nullDataRow rowCustomer;rowCustomer = ds.TablesCustomers.Rows.Find(ALFKI);rowCustomer.ItemArray = aCustomer;处理DataRow的空值/查看是否为空DataRow rowCustomer;rowCustomer = ds.TablesCustomers.Rows.Find(ALFKI);if(rowCustomer.IsNull(Phone)Console.WriteLine(Its Null);elseConsole.WriteLine(Its not Null);/赋予空值rowCustomerPhone = DBNull.Value;删除DataRowDataRow rowCustomer;rowCustomer = ds.TablesCustomers.Rows.Find(ALFKI);rowCustomer.Delete();清除DataRowDataRow rowCustomer = ds.TablesCustomers.Rows.Find(ALFKI);rowCustomer.ItemArray = aCustomer;da.TablesCustomers.Remove(rowCustomer);或者ds.TablesCustomers.RemoveAt(intIndex);使用DataRow.RowState属性 :Unchanged,Detached,Added,Modified,Deletedprivate void DemonstrateRowState() / Run a function to create a DataTable with one column. DataTable myTable = MakeTable(); DataRow myRow; / Create a new DataRow. myRow = myTable.NewRow(); / Detached row. Console.WriteLine(New Row + myRow.RowState); myTable.Rows.Add(myRow); / New row. Console.WriteLine(AddRow + myRow.RowState); myTable.AcceptChanges(); / Unchanged row. Console.WriteLine(AcceptChanges + myRow.RowState); myRowFirstName = Scott; / Modified row. Console.WriteLine(Modified + myRow.RowState); myRow.Delete(); / Deleted row. Console.WriteLine(Deleted + myRow.RowState);检查DataRow中的挂起更改DataRow rowCustomer;rowCustomer = ds.TablesCustomers.Rows.Find(ALFKI);rowCustomerCompanyName = NewCompanyName;string strNewCompanyName,strOldCompanyName;Console.WriteLine(rowCustomerCompanyName,DataRowVersion.Current); Console.WriteLine(rowCustomerCompanyName,DataRowVersion.Original);遍历DataSetforeach(DataTable dt in dataSet.Tables) foreach(DataRow dr in dt.Rows) foreach(DataColumn dc in dr.Table.Columns) Console.WriteLine(drdc);
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号