zoukankan      html  css  js  c++  java
  • ADO.NET 六(DataRow DataColumn)

      已经介绍了使用 SqlCommand 对象中的 ExecuteNonQuery 方法执行非查询 SQL 语句来实现对数据表的更新操作,使用 DataSet 对象也能实现相同的功能, 并且能节省数据访问时间。

      每个 DataSet 都是由多个 DataTable 构成的,更新 DataSet 中的数据实际上是通过更新 DataTable 来实现的。

      每个 DataTable 对象都是由行 (DataRow) 和列 (DataColumn) 构成的,下面分别介绍 DataRow 类和 DataColumn 类的使用。

    1) DataRow 类

      DataRow 类代表数据表中的行,并允许通过该类直接对数据表进行添加、修改、删除行的操作。

      DataRow 类中常用的属性和方法如下表所示。

    属性或方法说明
    Table 属性,设置 DataRow 对象所创建 DataTable 的名称
    RowState 属性,获取当前行的状态
    HasErrors 属性,获取当前行是否存在错误
    AcceptChanges() 方法,更新 DataTable 中的值
    RejectChanges() 方法,撤销对 DataTable 中的值的更新
    Delete() 方法,标记当前的行被删除,并在执行 AcceptChanges 方法后更新数据表


      在 DataRow 类中没有提供构造方法,需要通过 DataTable 中的 NewRow 方法创建 DataRow 类的对象,具体的语句如下。

    1. DataTable dt = new DataTable();
    2. DataRow dr = dt.NewRow();

      这样,dr 即为新添加的行,每行数据是由多列构成的,如果在 DataTable 对象中已经存在表结构,则直接使用dr[ 编号或列名 ]= 值的形式即可为表中的列赋值。

    2) DataColumn 类

      DataColumn 类是数据表中的列对象,与数据库中表的列定义一样,都可以为其设置列名以及数据类型。

      DataColumn类中常用的构造方法如下表所示。

    构造方法说明
    DataColumn() 无参构造方法
    DataColumn(string columnName) 带参数的构造方法,columnName 参数代表的是列名
    DataColumn(string columnName,Type dataType) 带参数的构造方法,columnName 参数代表的是列名,dataType 参数代表的是列的数据类型


      DataColumn 类提供了一些属性对 DataColumn 对象进行设置,常用的属性如下表所示。

    属性说明
    ColumnName 属性,设置 DataColumn 对象的列名
    DataType 属性,设置 DataColumn 对象的数据类型
    MaxLength 属性,设置 DataColumn 对象值的最大长度
    Caption 属性,设置 DataColumn 对象在显示时的列名,类似于给表中的列设置别名
    DefaultValue 属性,设置 DataColumn 对象的默认值
    AutoIncrement 属性,设置 DataColumn 对象为自动增长列,与 SQL Server 中数据表的标识列类似
    AutoIncrementSeed 属性,与 AutoIncrement 属性联用,用于设置自动增长列的初始值
    AutoIncrementStep 属性,与 AutoIncrement 属性联用,用于设置自动增长列每次增加的值
    Unique 属性,设置 DataColumn 对象的值是唯一的,类似于数据表的唯一约束
    AllowDBNull 属性,设置 DataColumn 对象的值是否允许为空


      下面通过实例来演示 DataRow 类和 DataColumn 类的使用。

      DataTable dt = new DataTable("myTable");
      DataColumn dc1 = new DataColumn("id", typeof(int));
      dc1.AutoIncrement = true;
      dc1.AutoIncrementSeed = 1;
      dc1.AutoIncrementStep = 1;
      dt.Columns.Add(dc1);
      DataColumn dc2 = new DataColumn("name", typeof(string));
      dc2.Caption = "姓名";
      dc2.Unique = true;
      dt.Columns.Add(dc2);

      DataRow dr1 = dt.NewRow();
      dr1["name"] = "frank";
      dt.Rows.Add(dr1);
      DataRow dr2 = dt.NewRow();
      dr2["name"] = "jack";
      dt.Rows.Add(dr2);

       //列“name”被约束为是唯一的。值“jack”已存在。
      //DataRow dr3 = dt.NewRow();
      //dr3["name"] = "jack";
      //dt.Rows.Add(dr3);
      for (int i = 0; i < dt.Rows.Count; i++)
      {
        WriteLine($"id:{dt.Rows[i]["id"]}, name:{dt.Rows[i]["name"]}");
      }

  • 相关阅读:
    OCM_第十四天课程:Section6 —》数据库性能调优_各类索引 /调优工具使用/SQL 优化建议
    OCM_第十三天课程:Section6 —》数据库性能调优 _结果缓存 /多列数据信息采集统计/采集数据信息保持游标有效
    OCM_第十二天课程:Section6 —》数据库性能调优_ 资源管理器/执行计划
    使用NuGet时的一个乌龙
    .net调用存储过程碰到的一个问题
    数据库的备份与还原
    创建link server链接服务器碰到的问题及解决办法
    如何管理好项目的DLL
    项目中Enum枚举的使用
    .NET开发知识体系
  • 原文地址:https://www.cnblogs.com/lu-yuan/p/11383869.html
Copyright © 2011-2022 走看看