程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C# DataTable的詳細用法,

C# DataTable的詳細用法,

編輯:C#入門知識

C# DataTable的詳細用法,


在項目中經常用到DataTable,如果DataTable使用得當,不僅能使程序簡潔實用,而且能夠提高性能,達到事半功倍的效果,現對DataTable的使用技巧進行一下總結。

一、DataTable簡介

          (1)構造函數
          DataTable()   不帶參數初始化DataTable 類的新實例。
          DataTable(string tableName)  用指定的表名初始化DataTable 類的新實例。
          DataTable(string tableName, string tableNamespace) 用指定的表名和命名空間初始化DataTable類的新實例。
          (2) 常用屬性
          CaseSensitive    指示表中的字符串比較是否區分大小寫。
          ChildRelations   獲取此DataTable 的子關系的集合。
          Columns             獲取屬於該表的列的集合。
          Constraints        獲取由該表維護的約束的集合。
DataSet               獲取此表所屬的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;
        }

C語言裡面,這個符號(->)是什,怎使用?

這是結構體指針中的一個符號,給你寫個程序解釋一下吧,例如:
#include<stdio.h>
struct STU //定義一個結構體
{
int num;
}stu;
int main()
{
struct STU *p; //定義一個結構體指針
p=stu; //p指向stu這個結構體變量
stu.num=100; //給結構體成員num附個初值
printf("%d",p->num); //輸出stu中的num的值
return;
}
看到了吧,->的作法就是在引用結構體中的變量!!
形式如:p->結構體成員(如p->num)
他的作用相當於stu.num或(*p).num
不知道這樣解釋你明不明白、、、、、不懂了call我,O(∩_∩)O~
望采納。
 

c語言中符號<<是什

左移運算符(<<)

將一個運算對象的各二進制位全部左移若干位(左邊的二進制位丟棄,右邊補0)。

例:a = a << 2 將a的二進制位左移2位,右補0,

左移1位後a = a * 2;

若左移時捨棄的高位不包含1,則每左移一位,相當於該數乘以2。
右移運算符(>>)

將一個數的各二進制位全部右移若干位,正數左補0,負數左補1,右邊丟棄。

操作數每右移一位,相當於該數除以2。

例如:a = a >> 2 將a的二進制位右移2位,

左補0 or 補1 得看被移數是正還是負。
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved