国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 金坛市| 河源市| 花莲市| 金山区| 广平县| 德格县| 伊通| 高州市| 昌都县| 徐水县| 鲜城| 马公市| 吉木萨尔县| 内江市| 绵竹市| 德江县| 仙游县| 阳高县| 南京市| 甘肃省| 巴彦淖尔市| 湘西| 襄垣县| 五大连池市| 西安市| 图们市| 岑巩县| 沐川县| 忻城县| 巴彦县| 临漳县| 浪卡子县| 辽宁省| 安塞县| 阳朔县| 宝清县| 九龙坡区| 博客| 广河县| 余江县| 新邵县|