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使用技巧

????? 1Create a DataTable
???????? DataTable dt = new DataTable("Table_AX");?

????? 2Add 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);?

??????
3Add 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);??

??????? 4Select row
???????? //Search the second row
假設沒有賦值,則用is nullselect
???????? DataRow[] drs = dt.Select("column1 is null");
???????? DataRow[] drss = dt.Select("column0 = 'AX'");?

??????? 5Copy DataTable include data
???????? DataTable dtNew = dt.Copy();?

???????
6Copy DataTable only scheme
???????? DataTable dtOnlyScheme = dt.Clone();?

???????
7Operate 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;?

??????
8Evaluate another DataTable's row to current Datatable
???????? dtOnlyScheme.Rows.Add(dt.Rows[0].ItemArray);?

??????
9Convert 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();

???????
10Filter DataTable
???????? dt.DefaultView.RowFilter = "column1 <> true";
???????? dt.DefaultView.RowFilter = "column1 = true";

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

????????
12Bind DataTable
?????????? //
綁定的事實上是DefaultView
????????? gvTestDataTable.DataSource = dt;
????????? gvTestDataTable.DataBind();

????????
13judge the DataTables Column name is a string
????????? //
推斷一個字符串是否為DataTable的列名
???????? dtInfo.Columns.Contains("AX");

????????
14DataTable 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;
??????? }

?

轉載于:https://www.cnblogs.com/bhlsheji/p/4343891.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/273357.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/273357.shtml
英文地址,請注明出處:http://en.pswp.cn/news/273357.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mysql設置環境變量

-- 設置或修改系統日志有效期SET GLOBAL expire_logs_days8;SHOW VARIABLES LIKE %expire_logs_days%;-- 設置或修改系統最大連接數SET GLOBAL max_connections 2648;SHOW VARIABLES LIKE %max_connections%;-- 修改MYSQL自動編號步長SHOW VARIABLES LIKE %auto_increment%;SE…

CentOS7 編譯安裝LVS 互為主備 (實測 筆記 Centos 7.0 + ipvsadm 1.27 + keepalived 1.2.15 )

環境&#xff1a; 系統硬件&#xff1a;vmware vsphere (CPU&#xff1a;2*4核&#xff0c;內存2G&#xff0c;雙網卡) LVS服務器&#xff08;兩臺&#xff09;&#xff1a; 系統&#xff1a;Centos7.0 64位&#xff08;LVSkeepalived&#xff09; LvsMaster:192.168.1.21 (主…

shell 執行mysql語句

<pre name"code" class"plain">#變量定義 sqlname"test.sql" dir"/sdb2/backup/mysql_db_backup/backup/databases" host"127.0.0.1" user"root" passwd"root" dbname"test" #導…

hdu3081 Marriage Match II(最大流)

轉載請注明出處&#xff1a; http://www.cnblogs.com/fraud/ ——by fraud Marriage Match II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2410 Accepted Submission(s): 820 Problem Descriptio…

CentOS6安裝tomcat6

首先我們要下載一個tomcat的安裝包 http://ftp.riken.jp/net/apache/ wget http://ftp.riken.jp/net/apache/tomcat/tomcat-6/v6.0.41/src/apache-tomcat-6.0.41.tar.gz 下載好后解壓到一個以目錄&#xff0c;我的是放在了/usr/apache-tomcat-6.0.41 tar –zxvf apache-t…

修復 XE7 , XE8 Frame 內 PopupMenu 快捷鍵失效問題

問題&#xff1a;將 Frame 含 PopupMenu 放置 Form 后&#xff0c;在 Frame 里的 PopupMenu 失效&#xff0c;無法按快捷鍵。 適用&#xff1a;(XE7 update 1 / XE8) for Windows 平臺 修正方法&#xff1a; 請將源碼 FMX.Forms.pas 復制到自己的工程目錄里&#xff0c;再進行修…

Vmware Centos中安裝vmtools工具

在Vmware安裝虛擬機是很好玩的&#xff0c;可是有時候在虛擬機與本地主機之間相互傳遞文件時卻是一件比較麻煩的事情&#xff0c;這時候我們安裝一個vmtools的工具這樣我們就可以隨意的在虛擬機與主機之間相互拖拽文件&#xff0c;下面我們就來說說如何安裝vmtools 點擊虛擬機會…

關于Dapper - 能否不創建定義表對應類使用

1.是可以的&#xff0c;而且支持的很棒 1 /*2 lcg3 * 1.看看能不能用4 * 2.怎么用 - 引哪個文件即可&#xff1f;5 */6 7 //數據庫連接參數8 private const string strConn "Data SourceAlen;Initial Catal…

動態規劃 背包九講的實現。

最近在學習動態規劃&#xff0c;會了不少基礎的之后就開始挑戰比較困難的背包問題了&#xff0c;我這里自己寫了每一講的問題&#xff0c;解析&#xff0c;代碼&#xff0c;注釋。如果dp還沒入門的孩紙就去看看我的另一篇文章http://www.cnblogs.com/luyi14/p/4344946.html …

Linux中查看負載

行車過橋 一只單核的處理器可以形象得比喻成一條單車道。設想下&#xff0c;你現在需要收取這條道路的過橋 費 — 忙于處理那些將要過橋的車輛。你首先當然需要了解些信息&#xff0c;例如車輛的載重、以及 還有多少車輛正在等待過橋。如果前面沒有車輛在等待&#xff0c;那么你…

flask小demo-數據查詢

mysqlconn-flask.py 1 # -*- coding: utf-8 -*-2 #codingutf-83 4 import os5 import mysql.connector6 from flask import Flask, request, render_template7 8 app Flask(__name__)9 10 def db(): 11 # 注意把password設為你的root口令: 12 conn mysql.connect…

js實現的文件下載

/** * Javascript 多文件下載 * author Barret Lee * email barret.chinagmail.com */var Downer (function(files) { var h5Down !/Trident|MSIE/.test(navigator.userAgent); // try{ // h5Down document.createElement("a").hasOwnProperty("download&quo…

Jersey注解詳解

REST 在 2000 年由 Roy Fielding 在博士論文中提出&#xff0c;他是 HTTP 規范 1.0 和 1.1 版的首席作者之一。 REST 中最重要的概念是資源&#xff08;resources&#xff09;&#xff0c;使用全球 ID&#xff08;通常使用 URI&#xff09;標識。客戶端應用程序使用 HTTP 方法&…

Struts2配置文件詳解

解決在斷網環境下,配置文件無提示的問題我們可以看到Struts.xml在斷網的情況下,前面有一個嘆號,這時,我們按alt/ 沒有提示,這是因為” http://struts.apache.org/dtds/struts-2.0.dtd”是一個網絡地址,如果上網的話,IDE會自動幫我們下載此文件,如果斷網就沒有辦法了,但是我們還…

mysql插入圖片數據

import java.sql.*; import java.util.Scanner; import java.io.*; public class mysql插入圖片 { private static final File File null;private static String String;public static Connection getConn() { Connection conn null; try { Class.forName("com.…

mybatis插入圖片處理--mysql

1. 數據庫Scheme 1.數據庫SchemeDROP TABLE IF EXISTS user_graphic_t; /*!40101 SET saved_cs_client character_set_client */; /*!40101 SET character_set_client utf8 */; CREATE TABLE user_graphic_t ( id int(11) NOT NULL AUTO_INCREMENT, graph…

careercup-高等難度 18.6

18.6 設計一個算法&#xff0c;給定10億個數字&#xff0c;找出最小的100萬個數字。假定計算機內存足以容納全部10億個數字。 解法&#xff1a; 方法1&#xff1a;排序 按升序排序所有的元素&#xff0c;然后取出前100萬個數&#xff0c;時間復雜度為O(nlog(n)) 方法2&#xff…

不浮躁的社會是什么樣的?

不浮躁就是該吃飯吃飯&#xff0c;該睡覺睡覺。該看書看書&#xff0c;該洗澡洗澡。聊事時聊事&#xff0c;陪朋友時陪朋友。萬事各得其所&#xff0c;各安其分&#xff0c;專心在此時此刻&#xff0c;做每一件事。而不是吃飯時想著別人的魚翅海參&#xff0c;睡覺時想著發票報…

java jre 中導入導出證書

導入證書&#xff1a; 將所要導入的證書放到Javahome的jre/lib/security文件夾中 運行命令jre/bin/keytool-import -alias cacerts -keystore cacerts -file 證書名稱 輸入默認密碼&#xff1a;changeit 導入過程中會交互詢問是否信任該證書&#xff0c;輸入 yes 導出證書 …

各種類庫網址學習

http://shouce.jb51.net/net/index.html轉載于:https://www.cnblogs.com/chenls/p/4362730.html