国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

自定義帶結構的可序列化數據集DataSet

2024-07-21 02:29:52
字體:
來源:轉載
供稿:網友
注冊會員,創(chuàng)建你的web開發(fā)資料庫,

 (一).說明

  在編程過程中有沒有遇到這樣的問題:  偶爾因為某種原因,數據庫表需要改一字段名稱。比如:將: name改為: personname.

  接下來程序員就把所有涉及到的代碼打開,找到類似: ds.table[0].row[n]["name"]的語句,修改成: ds.table[0].row[n]["name"].

  其實完全可以不用這么做,只加一個帶結構的dataset就ok了。  修改只修改本類代碼文件中的一個屬性就ok了,而且除本類代碼文件之外的應用程式代碼根本不用修改.

 (二).代碼:
 
using system;
using system.data;
using system.runtime.serialization;

namespace schemedataset
{
 /// <summary>
 /// 包含客戶信息的自定義的可序列化的數據集(dataset)

 /// </summary>
 [system.componentmodel.designercategory("code")]
 [serializableattribute]
 public class customers : dataset    //繼承dataset,這樣可以調用dataset中的所有方法
 {
  #region 以下為常量的聲明
 
  /// <summary>常量定義客戶資料表 customer 的表名稱</summary>
  public const string crmpscustomers_table = "customer";

  /// <summary>該常量定義客戶編號的欄位名</summary>
  public const string cusno_field = "cusno";

  /// <summary>該常量定義客戶名稱的欄位名</summary>
  public const string customername_field = "customername";

  /// <summary>該常量定義客戶地址的欄位名</summary>
  public const string address_field = "address";
 
  #endregion 以下變量、常量、及對象的聲明

  #region 以下為方法聲明

  public customers()
  {
      builddatatables();
  }

  /// <summary>
  ///     支持序列化的構造函數

  ///     <param name="info">對象的序列化信息</param>
  ///     <param name="context">關于被呼叫方法的上下文</param>
  /// </summary>
  private customers(serializationinfo info, streamingcontext context) : base(info, context)
  {}

  /// <summary>
  /// 創(chuàng)建帶結構的表:customer
  /// </summary>
  private void builddatatables()
  {
   //
   // 創(chuàng)建crmpscustomers的數據表
   //

   datatable table = new datatable(crmpscustomers_table);
   datacolumncollection columns = table.columns;

   //定義結構
   columns.add(cusno_field,typeof(system.string));
   columns.add(customername_field,typeof(system.string));
   columns.add(address_field,typeof(system.string));

   this.tables.add(table);
   contact contact = new contact();
   this.merge(contact);   //合并
  }

  #endregion 以下為方法聲明

 }
}

 (三).使用

 1.  當定義了這樣一個類后,在程式中應該這樣使用: 

  ds.table[customers.crmpscustomers_table].row[n][customers.customername_field];

  這樣就把所有的任務交給本類代碼文件了。  當修改數據庫時不用修改類似這些語句。 只修改一下結構類相關屬性的值即可.

 2. 定義此帶結構的數據集,還有一種情況用到,就是在有些界面,ui層與數據庫交互是單向的,即往數據庫添加數據之前沒有讀取架構,則dataset也就沒有結構(沒有結構不能存儲數據),這時這個類就起作用了.謝謝!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 阿拉善右旗| 玉山县| 吕梁市| 四平市| 乌鲁木齐市| 林周县| 凌海市| 奉新县| 大理市| 延庆县| 绵竹市| 综艺| 仪陇县| 调兵山市| 舒城县| 怀远县| 五大连池市| 社旗县| 长宁县| 和静县| 靖远县| 精河县| 永吉县| 昭通市| 旺苍县| 花垣县| 吉水县| 洞头县| 咸丰县| 云和县| 鄂州市| 巴里| 康马县| 日照市| 杂多县| 阿克| 班戈县| 南木林县| 高雄县| 余庆县| 阳新县|