a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C# > 正文

C# DataTable的詳細用法分享

2020-01-24 03:05:33
字體:
來源:轉載
供稿:網友

一、DataTable簡介   

(1)構造函數
DataTable()   不帶參數初始化DataTable 類的新實例。
DataTable(string tableName)  用指定的表名初始化DataTable 類的新實例。
DataTable(string tableName, string tableNamespace) 用指定的表名和命名空間初始化DataTable 類的新實例。
(2) 常用屬性
CaseSensitive    指示表中的字符串比較是否區分大小寫。
ChildRelations   獲取此DataTable 的子關系的集合。
Columns             獲取屬于該表的列的集合。
Constraints        獲取由該表維護的約束的集合。
DataSet               獲取此表所屬的DataSet。DataSet相關信息,可見我以前的一篇文章《數據訪問(2)-DataSet》
DefaultView       獲取可能包括篩選視圖或游標位置的表的自定義視圖。
HasErrors          獲取一個值,該值指示該表所屬的DataSet 的任何表的任何行中是否有錯誤。
MinimumCapacity  獲取或設置該表最初的起始大小。該表中行的最初起始大小。默認值為 50。
Rows                  獲取屬于該表的行的集合。
TableName       獲取或設置DataTable 的名稱。

(3)常用方法
AcceptChanges()   提交自上次調用AcceptChanges() 以來對該表進行的所有更改。
BeginInit()         開始初始化在窗體上使用或由另一個組件使用的DataTable。初始化發生在運行時。

Clear()               清除所有數據的DataTable。
Clone()              克隆DataTable 的結構,包括所有DataTable 架構和約束。
EndInit()            結束在窗體上使用或由另一個組件使用的DataTable 的初始化。初始化發生在運行時。
ImportRow(DataRow row)    將DataRow 復制到DataTable 中,保留任何屬性設置以及初始值和當前值。
Merge(DataTable table)  將指定的DataTable 與當前的DataTable 合并。
NewRow()         創建與該表具有相同架構的新DataRow。

二、DataTable使用技巧

(1)Create a DataTable

復制代碼 代碼如下:

DataTable dt = new DataTable("Table_AX");

(2)Add columns for DataTable
復制代碼 代碼如下:

//Method 1
dt.Columns.Add("column0", System.Type.GetType("System.String"));
//Method 2
DataColumn dc = new DataColumn("column1", System.Type.GetType("System.Boolean"));
dt.Columns.Add(dc);

(3)Add rows for DataTable
復制代碼 代碼如下:

//Initialize the row
DataRow dr = dt.NewRow();
dr["column0"] = "AX";
dr["column1"] = true;
dt.Rows.Add(dr);
//Doesn't initialize the row
DataRow dr1 = dt.NewRow();
dt.Rows.Add(dr1); 

(4)Select row
復制代碼 代碼如下:

//Search the second row 如果沒有賦值,則用is null來select
DataRow[] drs = dt.Select("column1 is null");
DataRow[] drss = dt.Select("column0 = 'AX'");

(5)Copy DataTable include data
復制代碼 代碼如下:

DataTable dtNew = dt.Copy();

(6)Copy DataTable only scheme
復制代碼 代碼如下:

DataTable dtOnlyScheme = dt.Clone();

(7)Operate one row
復制代碼 代碼如下:

//對dt的操作
//Method 1
DataRow drOperate = dt.Rows[0];
drOperate["column0"] = "AXzhz";
drOperate["column1"] = false;
//Method 2
drOperate[0] = "AXzhz";
drOperate[1] = false;
//Method 3
dt.Rows[0]["column0"] = "AXzhz";
dt.Rows[0]["column1"] = false;
//Method 4
dt.Rows[0][0] = "AXzhz";
dt.Rows[0][1] = false;

(8)Evaluate another DataTable's row to current Datatable
復制代碼 代碼如下:

dtOnlyScheme.Rows.Add(dt.Rows[0].ItemArray);

(9)Convert to string
復制代碼 代碼如下:

System.IO.StringWriter sw = new System.IO.StringWriter();
System.Xml.XmlTextWriter xw = new System.Xml.XmlTextWriter(sw);
dt.WriteXml(xw);
string s = sw.ToString();

(10)Filter DataTable
復制代碼 代碼如下:

dt.DefaultView.RowFilter = "column1 <> true";
dt.DefaultView.RowFilter = "column1 = true";

(11)Sort row
復制代碼 代碼如下:

dt.DefaultView.Sort = "ID ,Name ASC";
dt=dt.DefaultView.ToTable();

(12)Bind DataTable
復制代碼 代碼如下:

//綁定的其實是DefaultView
gvTestDataTable.DataSource = dt;
gvTestDataTable.DataBind();

(13)judge the DataTable's Column name is a string
復制代碼 代碼如下:

//判斷一個字符串是否為DataTable的列名
dtInfo.Columns.Contains("AX");

(14)DataTable convert to XML and XML convert to DataTable
復制代碼 代碼如下:

protected void Page_Load(object sender, EventArgs e)
{
DataTable dt_AX = new DataTable();
//dt_AX.Columns.Add("Sex", typeof(System.Boolean));
//DataRow dr = dt_AX.NewRow();
//dr["Sex"] = true;
//dt_AX.Rows.Add(dr);
string xml=ConvertBetweenDataTableAndXML_AX(dt_AX);
DataTable dt = ConvertBetweenDataTableAndXML_AX(xml);
}
public string ConvertBetweenDataTableAndXML_AX(DataTable dtNeedCoveret)
{
System.IO.TextWriter tw = new System.IO.StringWriter();
//if TableName is empty, WriteXml() will throw Exception.                

dtNeedCoveret.TableName=dtNeedCoveret.TableName.Length==0?"Table_AX":dtNeedCoveret.TableName;
dtNeedCoveret.WriteXml(tw);
dtNeedCoveret.WriteXmlSchema(tw);
return tw.ToString();
}
public DataTable ConvertBetweenDataTableAndXML_AX(string xml)
{
System.IO.TextReader trDataTable = new System.IO.StringReader(xml.Substring(0, xml.IndexOf("<?xml")));
System.IO.TextReader trSchema = new System.IO.StringReader(xml.Substring(xml.IndexOf("<?xml")));
DataTable dtReturn = new DataTable();
dtReturn.ReadXmlSchema(trSchema);
dtReturn.ReadXml(trDataTable);
return dtReturn;
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 天天插天天| 色婷综合网 | 精品国产31久久久久久 | 久久综合九色综合欧美狠狠 | 国产视频福利在线观看 | 黑人巨大精品欧美一区二区免费 | 青楼18春一级毛片 | 不卡视频一区 | 成人不卡视频 | 黄色在线免费看 | 日韩欧美一区二区三区视频 | 久久大陆| 欧美一区视频 | 免费av网页 | 国产精品视频一区二区三区四区五区 | 欧美怡红院视频一区二区三区 | 中文字幕亚洲欧美日韩在线不卡 | 日韩中文字幕一区 | 成人午夜在线视频 | 91精品视频在线 | 国产精品一二区 | av国产精品 | 中文字幕91 | 精品亚洲一区二区三区在线观看 | 国产超碰人人模人人爽人人添 | 色婷婷亚洲国产女人的天堂 | 国产成人精品久久二区二区91 | 一级做a爰 | 无码日韩精品一区二区免费 | 国产91在线网站 | 天堂精品一区二区三区 | 日韩一区二区在线观看 | 在线观看日本 | av一二三区 | 亚洲黄色三级 | 美日韩一区二区三区 | 一级黄视频 | 中文字幕一区二区三区精彩视频 | 欧美在线播放一区二区 | 欧美在线免费观看 | 天天艹视频|