• 对DataTable的一些解释


    最经做导入导出Excel时,经常操作DataTable,DataSet,就按自己的需求对他们的一些常用的东西进行了一下总结。

    一、DataTable简介    

              (1)构造函数 
              DataTable()  
    不带参数初始化DataTable 类的新实例。 
              DataTable(string tableName) 
    用指定的表名初始化DataTable 类的新实例。 
              DataTable(string tableName, string tableNamespace)
    用指定的表名和命名空间初始化DataTable 类的新实例。 
              (2)
    常用属性 
              CaseSensitive   
    指示表中的字符串比较是否区分大小写。 
              ChildRelations  
    获取此DataTable 的子关系的集合。 
              Columns            
    获取属于该表的列的集合。 
              Constraints       
    获取由该表维护的约束的集合。 
              
    DataSet               获取此表所属的DataSetDataSet相关信息,可见我以前的一篇文章《数据访问(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使用技巧

      下面使部分测试代码:

    View Code
     1 //关于DataSet与DataTable的解释
    2 private void text()
    3 {
    4 DataSet ds1 = new DataSet("datasetname");
    5 DataTable dt1 = new DataTable("table1");
    6
    7 //为Datatable添加列
    8 dt1.Columns.Add(new DataColumn("col1"));
    9 dt1.Columns.Add(new DataColumn("col2"));
    10 //另一种添加列的方法,可以在后面定制列的属性,包括列名,数据类型,是否为空,设置主键,自动增长等
    11 DataColumn col0 = dt1.Columns.Add();
    12 col0.ColumnName = "col0";
    13 col0.AllowDBNull = true;//是否为空
    14 col0.MaxLength = 10;//设置文本最大长度
    15
    16 dt1.PrimaryKey = new DataColumn[] { dt1.Columns["col1"] };//设置主键
    17 dt1.Columns["col1"].AutoIncrement = true;//自动增长
    18 dt1.Columns["col1"].AutoIncrementSeed = 0;
    19 dt1.Columns["col1"].AutoIncrementStep = 1;
    20
    21 //为DataTable添加数据,Row0
    22 DataRow dr;
    23 dr = dt1.NewRow();
    24 dr.BeginEdit();
    25 //在此处可以得知,下面两种方式都可以但是推荐使用dr["col0"]
    26 dr[1] = "2";
    27 dr["col0"] = "3";
    28 dr.EndEdit();
    29
    30 //为DataTable添加数据,Row1
    31 DataRow dr2 = dt1.NewRow();
    32 dr2.BeginEdit();
    33 dr2[1] = "22";
    34 dr2[2] = "33";
    35 dr2.EndEdit();
    36 dt1.Rows.Add(dr);
    37 dt1.Rows.Add(dr2);
    38
    39 //为DataTable添加数据,Row2
    40 object[] aValue = {"2","222","333" };
    41 dt1.LoadDataRow(aValue,false);
    42
    43 //对Row中数据的修改
    44 DataRow roweidt = dt1.Rows.Find("1");//表中必须有主键
    45 if (roweidt == null)
    46 {
    47 //没有查找到
    48 }
    49 else
    50 {
    51 roweidt.BeginEdit();
    52 roweidt["col2"] = "12";
    53 roweidt["col0"] = "13";
    54 roweidt.EndEdit();
    55 }
    56
    57 //对空值的处理
    58 DataRow roweidt2 = dt1.Rows.Find("1");//表中必须有主键
    59 if (roweidt2 == null)
    60 {
    61 //没有查找到
    62 }
    63 else
    64 {
    65 if (roweidt2.IsNull("col2"))
    66 { }
    67 else
    68 {
    69 roweidt2.BeginEdit();
    70 roweidt2["col2"] = DBNull.Value;//赋予空值
    71 roweidt2["col0"] = "13";
    72 roweidt2.EndEdit();
    73 }
    74 }
    75
    76 //删除DataRow
    77 //DataRow roweidt3 = dt1.Rows.Find("1");
    78 //roweidt3.Delete();
    79
    80 //清除DataRow
    81 DataRow roweidt4 = dt1.Rows.Find("1");
    82
    83 dt1.Rows.Remove(roweidt4);
    84 //dt1.Rows.RemoveAt(index);
    85
    86 //将Datatable加入到DataSet中
    87 ds1.Tables.Add(dt1);
    88
    89 //检验部分
    90 string tmp1 = dt1.Columns[0].ColumnName;
    91 string tmp2 = dt1.Rows[1][2].ToString();
    92 string tmp3 = ds1.Tables["table1"].Rows[1][2].ToString();
    93 }

    参考:C#中 DataTable使用详解

     三,深入了解DataTable,以及数据库之间的表传送问题请看

    深入详解DataTable 

     http://alexis.blog.51cto.com/2621421/573969

    四,关于Datatble中的简单的数据运算,请参照

    C#详解DataTable计算功能的实现

  • 相关阅读:
    javascript:getElementsByName td name
    C# 批量复制文件
    笨笨图片批量下载器[C# | WinForm | 正则表达式 | HttpWebRequest]
    浩方魔兽"去"小喇叭终极解决方案[Warcraft III]
    JavaScript——DataListBox(组合框)
    PowerDesigner 12 根据名称生成注释(完整示例)
    笨笨图片批量抓取下载 V0.2 beta[C# | WinForm | 正则表达式 | HttpWebRequest | Async异步编程]
    使用IHttpHandler做权限控制[ASP.NET | IHttpHandler | AjaxPro | UserHostName]
    AjaxPro 未定义错误
    北京有趣地名(二)
  • 原文地址:https://www.cnblogs.com/justinjia/p/2432267.html
Copyright © 2020-2023  润新知