C# DataTable的詳細用法

***************************************************

更多精彩,欢迎进入:http://shop115376623.taobao.com

***************************************************


DataTable 是一个临时保存数据的网格虚拟表(表示内存中数据的一个表。)。DataTable是ADO dot net 库中的核心对象。它可以被应用在 VB 和 ASP 上。它无须代码就可以简单的绑定数据库。它具有微软风格的用户界面。

  其他使用DataTable的对象包括DataSet和DataView。

注意

  当访问DataTable对象时,请注意它们是按条件区分大小写的。例如,如果一个DataTable被命名为“mydatatable”,另一个被命名为“Mydatatable”,则用于搜索其中一个表的字符串被认为是区分大小写的。但是,如果“mydatatable”存在而“Mydatatable”不存在,则认为该搜索字符串不区分大小写。一个DataSet可以包含数个DataTable对象,它们具有相同的TableName属性值和不同的Namespace属性值。有关使用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;
        }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/459057.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【SpringMVC】SpringMVC系列6之@CookieValue 映射请求Cookie 值

6、CookieValue 映射请求Cookie 值 6.1、示例 CookieValue 可让处理方法入参绑定某个 Cookie 值&#xff0c;示例如下&#xff1a;

杭电OJ-2104_hide handkerchief超简洁代码

#include<iostream> using namespace std; int n, m;; int zz(int a, int b) {return b0 ? a: zz(b, a%b); } int main() {while (cin >> n >> m&&n ! -1 && m ! -1)cout << (nb(n, m) 1 ? "YES" : "POOR Haha"…

php 年月日 中文,转换中文日期的PHP程序

转换中文日期的PHP程序本程序将中文日期输出为2001-12-23&#xff0c;并很好解决了“十”的问题&#xff0c;如“十一”和“二十一”中“十”的处理&#xff01;稍加修改可改为函数。跟随小编去看看吧&#xff01;希望对大家有所帮助&#xff01;$str"二零○一年十二月二十…

c# Invoke和BeginInvoke

*************************************************** 更多精彩&#xff0c;欢迎进入&#xff1a;http://shop115376623.taobao.com *************************************************** 转自&#xff1a;http://blog.3snews.net/html/30/34530-27563.html在多线程编程中&am…

Oracle手边常用70则脚本知识汇总

Oracle手边常用70则脚本知识汇总 作者&#xff1a;白宁超 时间&#xff1a;2016年3月4日13:58:36 摘要: 日常使用oracle数据库过程中&#xff0c;常用脚本命令莫不是用户和密码、表空间、多表联合、执行语句等常规操作。另外表的导入导出也很常用&#xff0c;这些脚步命令之前都…

php常见的面试题目

一. 基本知识点1.1 HTTP协议中几个状态码的含义:503 500 401 403 404 200 301 302。。。200 : 请求成功&#xff0c;请求的数据随之返回。301 : 永久性重定向。302 : 暂时行重定向。401 : 当前请求需要用户验证。403 : 服务器拒绝执行请求&#xff0c;即没有权限。404 : 请求失…

php表示私有变量的是,PHP 访问私有和受保护的成员变量

示例反射通常用作软件测试的一部分&#xff0c;例如在运行时创建/实例化模拟对象。这对于在任何给定时间点检查对象的状态也非常有用。这是在单元测试中使用Reflection来验证受保护的类成员是否包含期望值的示例。下面是一个非常基础的汽车课。它具有受保护的成员变量&#xff…

BZOJ2683 简单题(CDQ分治)

传送门 之前听别人说CDQ分治不难学&#xff0c;今天才知道果真如此。之前一直为自己想不到CDQ的方法二很不爽&#xff0c;今天终于是想出来了一道了&#xff0c;太弱…… cdq分治主要就是把整段区间分成两半&#xff0c;然后用左区间的值去更新右区间的答案&#xff0c;每次把…

VS2010断点设置技巧

*************************************************** 更多精彩&#xff0c;欢迎进入&#xff1a;http://shop115376623.taobao.com *************************************************** 许多Visual Studio下的程序员&#xff0c;甚至一些很有经验的开发人员&#xff0c;都不…

IOS应用开发版本控制工具之Versions使用,iosversions

Versions版本控制工具破解版&#xff08;Versions.zip&#xff09;下载请见本博文附件。下载后在MAC安装完以后&#xff0c;图标是莲花状。见下图&#xff1a; 双击运行如下图&#xff1a; 点击Repository&#xff0c;连接SVN服务器Repository&#xff08;服务器端采用的是SVN服…

php form action跳转,form表单页面跳转方式提交练习

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼//form表单提交练习/*新建一个form.html网页用来书写前端HTML表单*/表单提交练习姓名:年龄:电话:地址:QQ:自我评价://以上功能可自己添加或修改/*在form.html网页的基础上新建一个foms.php网页关联之前的form.html网页并书写php测试…

VS2010调试快捷键

*************************************************** 更多精彩&#xff0c;欢迎进入&#xff1a;http://shop115376623.taobao.com *************************************************** vs2010 调试快捷键 命令名 快捷键 说明 调试.应用代码更改 Alt F10 启动生…

什么是算法,什么是数据结构

尽管已经学了几年&#xff0c;对它们也可以说大致懂得。但是&#xff0c;作为非计算机专业的人员&#xff0c;还是不会比计算机专业人员懂得多。既然没有受过专门的学习训练&#xff0c;自然会有三天打鱼两天晒网的感觉&#xff0c;一天可能冒出一个念头。于是乎&#xff0c;写…

如何在多web服务器共享SESSION数据

2019独角兽企业重金招聘Python工程师标准>>> 一、问题起源 稍大一些的网站&#xff0c;通常都会有好几个服务器&#xff0c;每个服务器运行着不同功能的模块&#xff0c;使用不同的二级域名&#xff0c;而一个整体性强的网站&#xff0c;用户系统是统一的&#xff0…

grpc php 返回值过大,使用grpc实现php、java、go三方互调

grpc作为经典的rpc协议&#xff0c;虽然略重&#xff0c;但是是有学习的价值的通过下面的内容可以快速上手这个grpc框架安装命令行工具php需要这个额外的protoc、grpc_php_plugin工具把这个protobuf格式的文件生成php语言里的类go需要安装protoc-gen-go工具把protobuf格式的接口…

SOCKET通信的基本步骤

SOCKET通信的基本步骤 1&#xff09;建立一个服务器ServerSocket&#xff0c;并同时定义好ServerSocket的监听端口&#xff1b;2&#xff09;ServerSocket 调用accept()方法&#xff0c;使之处于阻塞。3&#xff09;创建一个客户机Socket,并设置好服务器的IP和端口。4&#xff…

Linux epoll 笔记(高并发事件处理机制)

wiki&#xff1a; Epoll优点&#xff1b; Epoll工作流程&#xff1b; Epoll实现机制: epollevent; Epoll源码分析&#xff1b; Epoll接口: epoll_create; epoll_ctl; epoll_close; Epoll工作方式: LT(level-triggered); ET(edge-triggered); Epoll应用模式; Epoll优点&#xff…

Django请求响应对象

请求与响应对象 HttpRequest HttpRequest存储了客户请求的相关参数和一些查询方法。 path请求页面的全路径,不包括域名—例如, "/hello/"。 methodHttp请求方法&#xff0c;包括GET,POST。 GETQueryDict类实例&#xff0c;包含所有HTTP GET参数的字典对象。 POSTQuer…

matlab 作图 虚线太长,matlab 极坐标绘图 在matlab中,用polar画的图形,如何使虚线圆多显示几个?...

满意答案iredwood推荐于 2018.12.26采纳率&#xff1a;52% 等级&#xff1a;12已帮助&#xff1a;13535人打开polar.m 文件&#xff0c;路径可通过输入 which polar 命令得到。其中修改下面这段代码&#xff0c;可以控制虚线圆的显示个数。其中rticks 为控制显示个数的参量。…

《学习opencv》笔记——矩阵和图像处理——cvAnd、cvAndS、cvAvg and cvAvgSdv

矩阵和图像的操作 (1)cvAnd函数 其结构 void cvAnd( //将src1和src2按像素点取“位与运算”const CvArr* src1,//第一个矩阵const CvArr* src2,//第二个矩阵CvArr* dst,//结果矩阵const CvArr* mask NULL;//矩阵经行像素点与的“开关” );程序实例#include <cv.h> #inc…