网站首页 > 网络编程教程 > C#/CSHARP教程 > C# DataSet和DataTable详解

C# DataSet和DataTable详解

  • 作者:互联网
  • 时间:2009-11-27 16:18:55

-
C# DataSet和DataTable详解
2009-四-21
一、创造DataSet对象:
DataSet ds = new DataSet("DataSetName");

二、查看调用Sq***taAdapter.Fill创造的构造
da.Fill(ds,"Orders");

DataTable tbl = ds.Table[零];

foreach(DataColumn col in tb***olumns)

Co***le.WriteLine(co***olumnName);

三、查看SqlDataAdapter回到的数据
①、DataRow对象
DataTable tbl = ds.Table[零];

DataRow row = tbl.Row[零];

Co***le.WriteLine(ros["OrderID"]);

②、稽查储存在DataRow中的数据
DataTable tbl = ro***able;

foreach(DataColumn col in tb***olumns)

Co***le.WriteLine(row[col]);

③、检察DatTable中的DataRow对象
foreach(DataRow row in tbl.Rows)

DisplayRow(row);

四、校验DataSet中的数据
①、校验DataColumn的属性:ReadOnly,AllowDBNull,MaxLength,Unique

②、DataTable对象的Constrains聚合:UiqueConstraints,Primarykey,ForeignkeyConstraints

正常无庸刻意去创办ForeignkeyConstraints,由于当在DataSet的两个DataTable对象其间创办关系时会创造一个。

③、用Sq***taAdapter.Fill方式来检索方式信息

五、编纂代码创造DataTable对象

①、创办DataTable对象:DataTable tbl = new DataTable("TableName");

②、将DataTable添加到DataSet对象的Table会合

DataSet ds = new DataSet();

DataTable tbl = new DataTable("Customers");

ds***bles.Add(tbl);

 

DataSet ds = new DataSet();

DataTable tbl = ds***bles.Add("Customers");

DataTable对象只得存在于最多一个DataSet对象中。如若希望将DataTable添加到多个DataSet中,就必须应用Copy步骤或Clone步骤。Copy步骤创办一个与原DataTable构造雷同而且包孕雷同行的新DataTable;Clone步骤创办一个与原DataTable构造雷同,但没包孕任何行的新DataTable。

③、为DataTable平添列

DataTable tbl = ds***bles.Add("Orders");

DataColumn col =tb***olumns.Add("OrderID",typeof(int));

co***llowDBNull = false;

co***axLength = 五;

co***nique = true;

tb***rimaryKey = new DataColumn[]{tb***olumns["CustomersID"]};

应设立主键时,AllowDBNull自动设立为False;

④、处置自动增量列

DataSet ds = new DataSet();

DataTable tbl = ds***bles.Add("Orders");

DataColumn col = tb***olumns.Add("OrderID",typeof(int));

co***utoIncrement = true;

co***utoIncrementSeed = -一;

co***utoIncrementStep = -一;

co***eadOnly = true;

⑤、增添基于表达式的列

tb***olumns.Add("ItemTotal",typeof(Decimal),"Quantity*UnitPrice");

六、批改DataTable内容
①、平添新DataRow

DataRow row = ds***bles["Customers"].NewRow();

row["CustomerID"] = "ALFKI";

ds***bles["Customers"].R***.Add(row);

 

object[] aValues ={"ALFKI","Alfreds","Anders","030-22222"};

da***bles["Customers"].LoadDataRow(aValues,false);


②、批改现阶段行

批改行的内容刑讯内不会自动批改数据库中呼应的内容,对行所做的批改被视为是过后将应用SqlDataAdapter对象来交付付给数据库的待定的改动。

DataRow rowCustomer;

rowCustomer = ds***bles["Custoemrs"].R***.Find("ANTON");

if(rowCustomer == null)

//没查寻客户

else

{

rowCustomer["CompanyName"] ="NewCompanyName";

rowCustomer["ContactName"] ="NewContactName";

}

//推荐施用这种形式

DataRow rowCustomer;

rowCustomer = ds***bles["Custoemrs"].R***.Find("ANTON");

if(rowCustomer == null)

//没查寻客户

else

{

ro***stomer.BeginEdit();

rowCustomer["CompanyName"] ="NewCompanyName";

rowCustomer["ContactName"] ="NewContactName";

ro***stomer.EndEdit();

}

//null示意不批改该列的数据

obejct[] aCustomer ={null,"NewCompanyName","NewContactName",null}

DataRow rowCustomer;

rowCustomer = ds***bles["Customers"].R***.Find("ALFKI");

ro***stomer.ItemArray = aCustomer;

③、处置DataRow的空值

//查看是不是为空

DataRow rowCustomer;

rowCustomer = ds***bles["Customers"].R***.Find("ALFKI");

if(ro***stomer.IsNull("Phone"))

Co***le.WriteLine("It's Null");

else

Co***le.WriteLine("It's not Null");

//授予空值

rowCustomer["Phone"] = DB***l.Value

④、剔除DataRow

DataRow rowCustomer;

rowCustomer = ds***bles["Customers"].R***.Find("ALFKI");

ro***stomer.Delete();

⑤、驱除DataRow

DataRow rowCustomer = ds***bles["Customers"].R***.Find("ALFKI");

ro***stomer.ItemArray = aCustomer;

da***bles["Customers"].Remove(rowCustomer);

或许

ds***bles["Customers"].RemoveAt(intIndex);

⑥、运用Da***ow.RowState属性 :Unchanged,Detached,Added,Modified,Deleted

private void DemonstrateRowState()

{ // Run a function to create a DataTable with one column. DataTable myTable = MakeTable();DataRow myRow;

// Create a new DataRow. myRow = my***le.NewRow();// Detached row. Co***le.WriteLine("New Row " + my***.RowState);

myTable.R***.Add(myRow);// New row. Co***le.WriteLine("AddRow " + my***.RowState);

my***le.AcceptChanges();// Unchanged row. Co***le.WriteLine("AcceptChanges " + my***.RowState);

myRow["FirstName"] = "Scott";// Modified row. Co***le.WriteLine("Modified " + my***.RowState);

my***.Delete();// Deleted row. Co***le.WriteLine("Deleted " + my***.RowState);}

⑦、检察DataRow中的挂起更动

DataRow rowCustomer;

rowCustomer = ds***bles["Customers"].R***.Find("ALFKI");

rowCustomer["CompanyName"] = "NewCompanyName";

string strNewCompanyName,strOldCompanyName;

Co***le.WriteLine(rowCustomer["CompanyName",Da***owVersion.Current]);

Co***le.WriteLine(rowCustomer["CompanyName",Da***owVersion.Original]);

一、DataSet
①、属性
CaseSensitive:用来统制DataTable中的字符串比较是不是界别大小写。
TOP


本文来源:
我的异常网
Java Exception
Dotnet Exception
Oracle