非强类型(UnTyped)Dataset 与强类型(UnTyped)Dataset 比较

以表名"MyTable",及字段 FirstName varchar(30),FamilyName varchar(30)为例

非强类型(UnTyped)Dataset 无需预先定义对应表的各个字段的属性,可以直接从查询出来的结果集(非强类型(UnTyped)Dataset)中取值例如: string lFirstName =  lDs.Table["MyTable"].Rows[0]["FirstName"].ToString();  (其中lDs是类Dataset的一个对象)


强类型的(Strong-Typed)Dataset 需要预先定义对应表的各个字段的属性(需要从DataSet, DataTable, DataRow继承,生成MyDataset,MyDataTable,MyDataRow类),取值方式  例如:string lFirstName = lTypedDs.MyTable[0].FirstName;
(其中lTypedDs是类MyDataset的一个对象;
lTypedDs.MyTable是类MyDataTable的一个对象,它是MyDataset类的一个属性;
lTypedDs.MyTable[0]返回一个MyDataRow对象,它就是一个实体的具体定义类EntityObject(包括属性FirstName 和FamilyName),对应于表MyTable的Schema;
lTypedDs.MyTable[0].FirstName是String类型,它是MyDataRow一个属性)

该强类型的大概伪代码如下(大家可以通过IDE环境的生产表MyDataTable对应的XSD,在通过XSD自动产生强类型Dataset:MyDataset的完整代码):

public class MyDataset : DataSet
{

 public MyDataset()
 {
  this.MyTable = new MyDataTable();
 }

以表名"MyTable",及字段 FirstName varchar(30),FamilyName varchar(30)为例

非强类型(UnTyped)Dataset 无需预先定义对应表的各个字段的属性,可以直接从查询出来的结果集(非强类型(UnTyped)Dataset)中取值例如: string lFirstName =  lDs.Table["MyTable"].Rows[0]["FirstName"].ToString();  (其中lDs是类Dataset的一个对象)


强类型的(Strong-Typed)Dataset 需要预先定义对应表的各个字段的属性(需要从DataSet, DataTable, DataRow继承,生成MyDataset,MyDataTable,MyDataRow类),取值方式  例如:string lFirstName = lTypedDs.MyTable[0].FirstName;
(其中lTypedDs是类MyDataset的一个对象;
lTypedDs.MyTable是类MyDataTable的一个对象,它是MyDataset类的一个属性;
lTypedDs.MyTable[0]返回一个MyDataRow对象,它就是一个实体的具体定义类EntityObject(包括属性FirstName 和FamilyName),对应于表MyTable的Schema;
lTypedDs.MyTable[0].FirstName是String类型,它是MyDataRow一个属性)

该强类型的大概伪代码如下(大家可以通过IDE环境的生产表MyDataTable对应的XSD,在通过XSD自动产生强类型Dataset:MyDataset的完整代码):

public class MyDataset : DataSet
{

 public MyDataset()
 {
  this.MyTable = new MyDataTable();
 }

 public class MyDataTable : DataTable
 {
 
   internal DataColumn columnFirstName;
     internal DataColumn columnFamilyName;
     internal MyDataTable() : 
      base("MyTable")
     {
        this.columnFirstName = new DataColumn("FirstName", typeof(string), null, System.Data.MappingType.Element);
        this.Columns.Add(this.columnFirstName);
        this.columnFamilyName = new DataColumn("FirstName", typeof(string), null, System.Data.MappingType.Element);
                this.Columns.Add(this.columnFamilyName);
     
     }  
    public MyDataRow this[int index]
    {
                get {
                    return ((MyDataRow )(this.Rows[index]));
                }
   }

 }
 
 public class MyDataRow : DataRow
 {
  internal MyDataRow(DataRowBuilder rb) :
                    base(rb) {
       this.tableMyTable = ((MyDataTable)(this.Table));
    }
  private MyDataTable  tableMyTable;
  
  public string FirstName
  {
   get {
          return ((string)(this[this.tableMyTable.columnFirstName]));
      }
      set {
          this[this.tableMyTable.columnFirstName] = value;
      }
  }
  public string FamilyName 
  get {
          return ((string)(this[this.tableMyTable.columnFamilyName]));
      }
      set {
          this[this.tableMyTable.columnFamilyName] = value;
      }
 } 
 public MyDataTable MyTable;   
}

public class MyDataset : DataSet
{

 public MyDataset()
 {
  this.MyTable = new MyDataTable();
 }

 public class MyDataTable : DataTable
 {
 
   internal DataColumn columnFirstName;
     internal DataColumn columnFamilyName;
     internal MyDataTable() : 
      base("MyTable")
     {
        this.columnFirstName = new DataColumn("FirstName", typeof(string), null, System.Data.MappingType.Element);
        this.Columns.Add(this.columnFirstName);
        this.columnFamilyName = new DataColumn("FirstName", typeof(string), null, System.Data.MappingType.Element);
                this.Columns.Add(this.columnFamilyName);
     
     }  
    public MyDataRow this[int index]
    {
                get {
                    return ((MyDataRow )(this.Rows[index]));
                }
   }

 }
 
 public class MyDataRow : DataRow
 {
  internal MyDataRow(DataRowBuilder rb) :
                    base(rb) {
       this.tableMyTable = ((MyDataTable)(this.Table));
    }
  private MyDataTable  tableMyTable;
  
  public string FirstName
  {
   get {
          return ((string)(this[this.tableMyTable.columnFirstName]));
      }
      set {
          this[this.tableMyTable.columnFirstName] = value;
      }
  }
  public string FamilyName 
  get {
          return ((string)(this[this.tableMyTable.columnFamilyName]));
      }
      set {
          this[this.tableMyTable.columnFamilyName] = value;
      }
 } 
 public MyDataTable MyTable;   
}

public class MyDataset : DataSet
{

 public MyDataset()
 {
  this.MyTable = new MyDataTable();
 }

以表名"MyTable",及字段 FirstName varchar(30),FamilyName varchar(30)为例

非强类型(UnTyped)Dataset 无需预先定义对应表的各个字段的属性,可以直接从查询出来的结果集(非强类型(UnTyped)Dataset)中取值例如: string lFirstName =  lDs.Table["MyTable"].Rows[0]["FirstName"].ToString();  (其中lDs是类Dataset的一个对象)


强类型的(Strong-Typed)Dataset 需要预先定义对应表的各个字段的属性(需要从DataSet, DataTable, DataRow继承,生成MyDataset,MyDataTable,MyDataRow类),取值方式  例如:string lFirstName = lTypedDs.MyTable[0].FirstName;
(其中lTypedDs是类MyDataset的一个对象;
lTypedDs.MyTable是类MyDataTable的一个对象,它是MyDataset类的一个属性;
lTypedDs.MyTable[0]返回一个MyDataRow对象,它就是一个实体的具体定义类EntityObject(包括属性FirstName 和FamilyName),对应于表MyTable的Schema;
lTypedDs.MyTable[0].FirstName是String类型,它是MyDataRow一个属性)

该强类型的大概伪代码如下(大家可以通过IDE环境的生产表MyDataTable对应的XSD,在通过XSD自动产生强类型Dataset:MyDataset的完整代码):

public class MyDataset : DataSet
{

 public MyDataset()
 {
  this.MyTable = new MyDataTable();
 }

 public class MyDataTable : DataTable
 {
 
   internal DataColumn columnFirstName;
     internal DataColumn columnFamilyName;
     internal MyDataTable() : 
      base("MyTable")
     {
        this.columnFirstName = new DataColumn("FirstName", typeof(string), null, System.Data.MappingType.Element);
        this.Columns.Add(this.columnFirstName);
        this.columnFamilyName = new DataColumn("FirstName", typeof(string), null, System.Data.MappingType.Element);
                this.Columns.Add(this.columnFamilyName);
     
     }  
    public MyDataRow this[int index]
    {
                get {
                    return ((MyDataRow )(this.Rows[index]));
                }
   }

 }
 
 public class MyDataRow : DataRow
 {
  internal MyDataRow(DataRowBuilder rb) :
                    base(rb) {
       this.tableMyTable = ((MyDataTable)(this.Table));
    }
  private MyDataTable  tableMyTable;
  
  public string FirstName
  {
   get {
          return ((string)(this[this.tableMyTable.columnFirstName]));
      }
      set {
          this[this.tableMyTable.columnFirstName] = value;
      }
  }
  public string FamilyName 
  get {
          return ((string)(this[this.tableMyTable.columnFamilyName]));
      }
      set {
          this[this.tableMyTable.columnFamilyName] = value;
      }
 } 
 public MyDataTable MyTable;   
}

public class MyDataset : DataSet
{

 public MyDataset()
 {
  this.MyTable = new MyDataTable();
 }

 public class MyDataTable : DataTable
 {
 
   internal DataColumn columnFirstName;
     internal DataColumn columnFamilyName;
     internal MyDataTable() : 
      base("MyTable")
     {
        this.columnFirstName = new DataColumn("FirstName", typeof(string), null, System.Data.MappingType.Element);
        this.Columns.Add(this.columnFirstName);
        this.columnFamilyName = new DataColumn("FirstName", typeof(string), null, System.Data.MappingType.Element);
                this.Columns.Add(this.columnFamilyName);
     
     }  
    public MyDataRow this[int index]
    {
                get {
                    return ((MyDataRow )(this.Rows[index]));
                }
   }

 }
 
 public class MyDataRow : DataRow
 {
  internal MyDataRow(DataRowBuilder rb) :
                    base(rb) {
       this.tableMyTable = ((MyDataTable)(this.Table));
    }
  private MyDataTable  tableMyTable;
  
  public string FirstName
  {
   get {
          return ((string)(this[this.tableMyTable.columnFirstName]));
      }
      set {
          this[this.tableMyTable.columnFirstName] = value;
      }
  }
  public string FamilyName 
  get {
          return ((string)(this[this.tableMyTable.columnFamilyName]));
      }
      set {
          this[this.tableMyTable.columnFamilyName] = value;
      }
 } 
 public MyDataTable MyTable;   
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值