青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

C++ Programmer's Cookbook

{C++ 基礎(chǔ)} {C++ 高級} {C#界面,C++核心算法} {設(shè)計(jì)模式} {C#基礎(chǔ)}

ADO>NET之datatable(五)

DataTable 表示一個(gè)內(nèi)存內(nèi)關(guān)系數(shù)據(jù)的表,可以獨(dú)立創(chuàng)建和使用,也可以由其他 .NET Framework 對象使用,最常見的情況是作為 DataSet 的成員使用。

DataTable 對象可通過使用 DataTable 構(gòu)造函數(shù)來創(chuàng)建,或者可通過將構(gòu)造函數(shù)參數(shù)傳遞到 DataSetTables 屬性的 Add 方法(它是一個(gè) DataTableCollection)來創(chuàng)建。

DataTable 對象可通過使用 DataAdapter 對象的 Fill 方法或 FillSchema 方法在 DataSet 內(nèi)創(chuàng)建,或者可使用 DataSetReadXmlReadXmlSchema InferXmlSchema 方法從預(yù)定義的或推斷的 XML 架構(gòu)中創(chuàng)建。請注意,將一個(gè) DataTable 作為成員添加到一個(gè) DataSetTables 集合中后,不能再將其添加到任何其他 DataSet 的表集合中。

最初創(chuàng)建 DataTable 時(shí),它是沒有架構(gòu)(結(jié)構(gòu))的。要定義表的架構(gòu),必須創(chuàng)建 DataColumn 對象并將其添加到表的 Columns 集合中。您也可以為表定義主鍵列,并且可以創(chuàng)建 Constraint 對象并將其添加到表的 Constraints 集合中。在為 DataTable 定義了架構(gòu)之后,可通過將 DataRow 對象添加到表的 Rows 集合中來將數(shù)據(jù)行添加到表。

創(chuàng)建 DataTable 時(shí),不需要為 TableName 屬性提供值,您可以在其他時(shí)間指定屬性,或者將其保留為空。但是,在將一個(gè)沒有 TableName 值的表添加到 DataSet 中時(shí),該表會(huì)得到一個(gè)從“Table”(表示 Table0)開始遞增的默認(rèn)名稱 TableN

[C#]
DataTable workTable = new DataTable("Customers");

DataSet custDS = new DataSet();
DataTable custTable = custDS.Tables.Add("CustTable");

DataTable 包含了由表的 Columns 屬性引用的 DataColumn 對象的集合。這個(gè)列的集合與任何約束一起定義表的架構(gòu)或結(jié)構(gòu)。

通過使用 DataColumn 構(gòu)造函數(shù),或者通過調(diào)用表的 Columns 屬性的 Add 方法(它是一個(gè) DataColumnCollection),可在表內(nèi)創(chuàng)建 DataColumn 對象。Add 方法將接受可選的 ColumnNameDataTypeExpression 參數(shù),并將創(chuàng)建新的 DataColumn 作為集合的成員。它也會(huì)接受現(xiàn)有的 DataColumn 對象并會(huì)將其添加到集合中,并會(huì)根據(jù)請求返回對所添加的 DataColumn 的引用。由于 DataTable 對象對任何數(shù)據(jù)源都不是特定的,所以在指定 DataColumn 的數(shù)據(jù)類型時(shí)會(huì)使用 .NET Framework 類型。

DataTable workTable = new DataTable("Customers");

DataColumn workCol = workTable.Columns.Add("CustID", typeof(Int32));
workCol.AllowDBNull = false;
workCol.Unique = true;

workTable.Columns.Add("CustLName", typeof(String));
workTable.Columns.Add("CustFName", typeof(String));
workTable.Columns.Add("Purchases", typeof(Double));

請注意,示例中用于 CustID 列的屬性設(shè)置為不允許 DBNull 值并將值約束為唯一。但是,如果您將 CustID 列定義為表的主鍵列,AllowDBNull 屬性就會(huì)自動(dòng)設(shè)置為 false,并且 Unique 屬性會(huì)自動(dòng)設(shè)置為 true。有關(guān)更多信息,請參見為表定義主鍵

在創(chuàng)建 DataTable 并使用列和約束定義其結(jié)構(gòu)之后,您可以將新的數(shù)據(jù)行添加到表中。要添加新行,可將一個(gè)新變量聲明為 DataRow 類型。調(diào)用 NewRow 方法時(shí),將返回新的 DataRow 對象。然后,DataTable 會(huì)根據(jù)表的結(jié)構(gòu)按 DataColumnCollection 的定義創(chuàng)建 DataRow 對象。

以下示例向新建的 Customers 表中添加了十行。

[C#]
DataRow workRow;

for (int i = 0; i <= 9; i++) 
{
  workRow = workTable.NewRow();
  workRow[0] = i;
  workRow[1] = "CustName" + i.ToString();
  workTable.Rows.Add(workRow);
}

::

您也可以通過傳入值的數(shù)組(類型化為 Object),調(diào)用 Add 方法來添加新行,如下例所示。

[C#]
workTable.Rows.Add(new Object[] {1, "Smith"});
[C#] workRow["CustLName"] = "Smith"; workRow[1] = "Smith";
workTable.Rows.Add(workRow);
 
------------------------------------------------------------

查看表中的數(shù)據(jù)

可以使用 DataTable RowsColumns 集合來訪問 DataTable 中的內(nèi)容。也可以根據(jù)包括搜索標(biāo)準(zhǔn)、排序順序和行狀態(tài)等特定標(biāo)準(zhǔn),
使用 DataTable.Select 方法返回 DataTable 中數(shù)據(jù)的子集。此外,用主鍵值搜索特定行時(shí),還可使用 DataRowCollectionFind
方法。

DataTable 對象的 Select 方法返回一組與指定條件匹配的 DataRow 對象。Select 采用篩選表達(dá)式、排序表達(dá)式和 DataViewRowState
的可選參數(shù)。篩選表達(dá)式根據(jù) DataColumn 值(例如 LastName = 'Smith'。排序表達(dá)式遵循用于為列排序的標(biāo)準(zhǔn) SQL 約定,例如
LastName ASC, FirstName ASC。有關(guān)編寫表達(dá)式的規(guī)則,請參見 DataColumn 類的 Expression 屬性。

[C#] DataRow[] currRows = workTable.Select(null, null, DataViewRowState.CurrentRows); if (currRows.Length < 1 ) Console.WriteLine("No Current Rows Found"); else { foreach (DataColumn myCol in workTable.Columns) Console.Write("\t{0}", myCol.ColumnName); Console.WriteLine("\tRowState"); foreach (DataRow myRow in currRows) { foreach (DataColumn myCol in workTable.Columns) Console.Write("\t{0}", myRow[myCol]); Console.WriteLine("\t" + myRow.RowState); } }
------------------------------------------------------

編輯表中的數(shù)據(jù)

當(dāng)您在 DataRow 中更改列值時(shí),所做更改會(huì)立即置于行的 Current 狀態(tài)中。然后,RowState 會(huì)設(shè)置為 Modified,并使用 DataRow
AcceptChangesRejectChanges 方法來接受或拒絕所做更改。DataRow 還提供了三種可用于在編輯行時(shí)將行的狀態(tài)掛起的方法。
這些方法是 BeginEditEndEditCancelEdit

當(dāng)您直接在 DataRow 中修改列值時(shí),DataRow 會(huì)使用 CurrentDefaultOriginal 行版本來管理列值。除這些行版本以外,
BeginEditEndEditCancelEdit 方法還使用第四個(gè)行版本:Proposed。有關(guān)行版本的更多信息,請參見行狀態(tài)與行版本

在執(zhí)行編輯操作(通過調(diào)用 BeginEdit 開始,并且通過使用 EndEditCancelEdit 或者通過調(diào)用 AcceptChangesRejectChanges 結(jié)束)
的過程中,Proposed 行版本會(huì)存在。

在編輯操作過程中,您可以通過計(jì)算 DataTableColumnChanged 事件中的 ProposedValue 來將驗(yàn)證邏輯應(yīng)用于各列。ColumnChanged
事件保存 DataColumnChangeEventArgs,可保持對正在更改的列和 ProposedValue 的引用。計(jì)算了建議值后,可以對其進(jìn)行修改或取消編輯。
編輯結(jié)束時(shí),行從 Proposed 狀態(tài)中移出。

您可以通過調(diào)用 EndEdit 來確認(rèn)編輯,也可以通過調(diào)用 CancelEdit 來取消編輯。請注意,盡管 EndEdit 確實(shí)已確認(rèn)您所做的編輯,但在調(diào)用
AcceptChanges 之前,DataSet 并沒有實(shí)際接受更改。另外請注意,如果在 EndEditCancelEdit 編輯結(jié)束之前調(diào)用 AcceptChanges
編輯將會(huì)終止,并接受 CurrentOriginal 行版本的 Proposed 行值。調(diào)用 RejectChanges 會(huì)以同樣的方式結(jié)束編輯,并放棄 Current
Proposed 行版本。在調(diào)用 AcceptChangesRejectChanges 之后調(diào)用 EndEditCancelEdit 不會(huì)起作用,因?yàn)榫庉嬕呀?jīng)結(jié)束。


[C#] DataTable workTable = new DataTable(); workTable.Columns.Add("LastName", typeof(String)); workTable.ColumnChanged += new DataColumnChangeEventHandler(OnColumnChanged); DataRow workRow = workTable.NewRow(); workRow[0] = "Smith"; workTable.Rows.Add(workRow); workRow.BeginEdit(); // Causes the ColumnChanged event to write a message and cancel the edit. workRow[0] = ""; workRow.EndEdit(); // Displays "Smith, New". Console.WriteLine("{0}, {1}", workRow[0], workRow.RowState); protected static void OnColumnChanged(Object sender, DataColumnChangeEventArgs args) { if (args.Column.ColumnName == "LastName") if (args.ProposedValue.ToString() == "") { Console.WriteLine("Last Name cannot be blank. Edit canceled."); args.Row.CancelEdit(); } }

posted on 2005-11-24 12:06 夢在天涯 閱讀(1724) 評論(0)  編輯 收藏 引用 所屬分類: C#/.NET

公告

EMail:itech001#126.com

導(dǎo)航

統(tǒng)計(jì)

  • 隨筆 - 461
  • 文章 - 4
  • 評論 - 746
  • 引用 - 0

常用鏈接

隨筆分類

隨筆檔案

收藏夾

Blogs

c#(csharp)

C++(cpp)

Enlish

Forums(bbs)

My self

Often go

Useful Webs

Xml/Uml/html

搜索

  •  

積分與排名

  • 積分 - 1811983
  • 排名 - 5

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              欧美日韩精品二区| 久久国产日本精品| 国产日韩在线播放| 欧美日韩免费区域视频在线观看| 美女脱光内衣内裤视频久久影院| 久久夜色精品国产欧美乱| 久久精品国产99精品国产亚洲性色 | 午夜视频一区二区| 久久国产精品一区二区三区四区| 久久这里只有精品视频首页| 欧美a级一区| 亚洲精品国产拍免费91在线| 亚洲韩国青草视频| 中文在线不卡| 欧美在线啊v| 欧美—级a级欧美特级ar全黄| 欧美视频不卡中文| 在线看日韩av| 午夜精品视频网站| 欧美插天视频在线播放| 在线亚洲一区| 麻豆精品视频| 国产麻豆日韩| 99精品视频一区二区三区| 欧美一级电影久久| 亚洲激情偷拍| 久久人人超碰| 国产九色精品成人porny| 亚洲国内精品| 99日韩精品| 欧美伦理在线观看| 国产精品久久久久久久电影| 狠狠操狠狠色综合网| 亚洲视频播放| 欧美激情精品久久久久久大尺度 | 欧美激情一区二区三级高清视频| 国产精品久久久久久久久久直播 | 欧美激情亚洲国产| 国内在线观看一区二区三区| 中国亚洲黄色| 亚洲激情中文1区| 久久久久久久一区二区三区| 国产精品乱码一区二区三区| 亚洲国产欧美日韩| 久久久久综合一区二区三区| 一区二区av在线| 欧美电影在线| 亚洲高清资源| 老司机精品导航| 久久精品亚洲精品| 国产亚洲永久域名| 久久aⅴ国产紧身牛仔裤| 亚洲深爱激情| 欧美午夜女人视频在线| 宅男精品视频| 亚洲免费av网站| 欧美日韩免费看| 在线播放日韩欧美| 久久久av水蜜桃| 欧美一区1区三区3区公司| 国产精品久久久999| 亚洲欧美日韩一区在线| 亚洲视频观看| 国产精品自在在线| 久久精品国产综合| 欧美资源在线观看| 在线观看免费视频综合| 欧美1级日本1级| 毛片一区二区| 99精品欧美| 亚洲一区二区三区四区在线观看 | 国产一区二区三区日韩欧美| 久久久久久免费| 久久久久久高潮国产精品视| 亚洲福利国产精品| 亚洲日韩第九十九页| 欧美色图一区二区三区| 欧美一进一出视频| 久久狠狠亚洲综合| 亚洲韩国日本中文字幕| 亚洲欧洲一区二区在线观看| 亚洲欧美日韩精品久久久| 亚洲午夜精品福利| 国产乱码精品一区二区三区av | 亚洲成在线观看| 欧美剧在线免费观看网站| 宅男噜噜噜66一区二区| 新狼窝色av性久久久久久| 在线观看日韩av| 亚洲毛片在线观看| 国产午夜精品美女毛片视频| 欧美jizzhd精品欧美巨大免费| 欧美精品一区二区精品网| 欧美一区二区三区免费大片| 久久亚洲综合色一区二区三区| 日韩网站在线观看| 亚洲综合精品自拍| 亚洲欧洲精品一区二区三区不卡| 亚洲色图自拍| 亚洲日本中文字幕| 亚洲一二三区在线| 91久久黄色| 欧美在线视屏| av成人免费在线观看| 久久成人精品| 亚洲一级免费视频| 久久久97精品| 亚洲欧美综合| 欧美女同视频| 欧美jizzhd精品欧美巨大免费| 国产精品美女一区二区在线观看| 欧美成人免费小视频| 国产亚洲欧美在线| 这里只有精品丝袜| 亚洲精品字幕| 久久米奇亚洲| 欧美中文字幕在线播放| 欧美日韩精品在线视频| 欧美成人黑人xx视频免费观看| 国产日韩欧美一区| 亚洲色图自拍| 亚洲午夜精品在线| 欧美久久久久久| 亚洲国产成人精品视频| 影音先锋亚洲电影| 欧美一区2区三区4区公司二百| 先锋影音久久久| 国产精品电影网站| 亚洲美女在线观看| 日韩视频一区二区| 欧美激情精品| 亚洲国产精品综合| 亚洲日韩欧美视频一区| 另类天堂av| 欧美国产欧美亚洲国产日韩mv天天看完整 | 久久综合色婷婷| 国产在线播放一区二区三区| 欧美在线一二三区| 亚洲欧洲午夜| 亚洲日本免费电影| 免费一级欧美片在线播放| 亚洲清纯自拍| 久久久久久网| 亚洲精品日韩久久| 亚洲精品无人区| 麻豆精品精华液| 老司机一区二区三区| 国产一区二区黄| 久久精品国语| 亚洲高清影视| 夜夜嗨av一区二区三区中文字幕| 欧美精品一区二区三区在线看午夜 | 午夜精品国产| 久久国产88| 国产一区清纯| 久久亚洲精选| 亚洲精品中文字| 亚洲欧美日韩区| 国产深夜精品福利| 久久精品视频99| 亚洲福利视频一区二区| 一区二区国产在线观看| 国产精品国产三级国产专播品爱网| 亚洲一区二区三区影院| 久久久久久穴| 亚洲人精品午夜| 国产精品视频xxx| 久久久久高清| 亚洲精品一区二区三区樱花| 午夜欧美精品久久久久久久| 黑人一区二区三区四区五区| 欧美国产亚洲视频| 亚洲欧美色婷婷| 亚洲电影激情视频网站| 亚洲欧美资源在线| 亚洲国产精品一区二区www| 欧美色大人视频| 久久久一区二区| 亚洲夜间福利| 亚洲精品日韩激情在线电影 | 久久精品成人一区二区三区蜜臀| 在线观看视频一区| 欧美性猛交99久久久久99按摩| 欧美影片第一页| 亚洲三级免费观看| 久久久综合香蕉尹人综合网| 9色porny自拍视频一区二区| 国产一在线精品一区在线观看| 久久久久久黄| 国产精品高清在线| 午夜精品久久久久久99热软件 | 亚洲毛片在线观看| 欧美不卡一区| 日韩一区二区精品视频| 亚洲精品无人区| 国产视频一区三区| 亚洲国产精品久久久久婷婷884 | 亚洲国产清纯| 久久久久久久国产| 亚洲欧美制服中文字幕|