自訂資料庫物理表中各欄欄位的名稱

來源:互聯網
上載者:User
資料|資料庫

  (一). 序幕

  1.在實際的軟體開發中大部分都是團隊合作開發的,經常會出現這種情況,一個程式員只設計好資料庫,由另一個程式員寫程式.這就出現一個問題. 設計資料庫的程式員 設計資料庫欄位名稱命名習慣 與 寫程式碼程式員資料庫命名習慣有些不同.  例如: 資料庫程式員對 客戶名稱習慣命名"CustomerName" ,而寫程式代碼程式員習慣命名"CusName",這樣,寫程式代碼程式員在使用時,可能會大量使用類似:DataSet.Row[0]["CusName"],這樣在更新時就會報錯,如果大量出現這種情況的話,不但增加開發時修改BUG所耗時間,而且更重要的是會使整個項目各字碼頁面很難統一.

  2.可以實現用戶端命名不受資料庫的約束.  例如資料庫中兩個表中的兩個名稱欄位分別為: CustomerName和ProjectName;  用戶端在相關介面,命名欄位時沒必要知道是哪個表中欄位的名稱,直接寫Name就可以了.

  此文章就是解決上面兩點的要求.

  (二). 解決方案

  1.

  其實SqlDataAdapter就已經實現此功能了. 它可以實現列映射,即將資料庫的列程式員自訂的列對應起來. 舉例說明:

  設有個客戶表 Customer ,下面將對其內欄位進行映射,具體 代碼如下:

  SqlDataAdapter myAdapter = new DqlDataAdapter();        

  DataTableMapping myMapping = new DataTableMapping();

  myMapping = myAdapter.TableMappings.Add("Customer","Customer");  //告訴橋接器並添加映射對象

  myMapping.ColumnMappings.Add("CustomerID","id");   //實際資料庫中欄位名為: CustomerID, 在實際 //對其操作時可以用ID欄位名稱.  例如:

  //  ds.Table["Customer"].Row[0]["id"];   //就表示客戶編碼列

  myMapping.ColumnMappings.Add("CustomerName","name");

  myMapping.ColumnMappings.Add("CustomerEmail","email");

  myAdapter.Fill(ds,"Customer");

  以上在使用時只需用映射後的操作就可以啦.  映射後的這段名稱可以自訂.  SqlDataAdapter會將它們

      對應起來,即將它們看作是同一列.

  2 .解決網站統一問題 : 

  a.

  假設在十個頁面中都用了代碼:

  ds.Table["Customer"].Row[0]["CustomerName"];

  現在由於某原因,要修改資料庫表欄位,需要將物理資料庫中的欄位:CustomerName改為: CusName基於現在的情況,還要到這十個頁面中去,找出所有的:

  ds.Table["Customer"].Row[0]["CustomerName"];

  並將其改為:  ds.Table["Customer"].Row[0]["CusName"];

  呵,就改一個欄位就帶來這麼多麻煩,如果改好多個表的多個欄位的話呢,時間消耗多少和維護難易程度就可想而知了.      下面就解決這個問題.

 b.

 定義一個類,並繼承DataSet. 代碼如下:

 public Class Customer : DataSet

 {

     public Enum Field

    {

  ID = 0; //這些列與 DataSet內部表獲得資料後實際欄位名稱對應要正確.  這裡自己控制

    Name = 1;

    Email = 2;

    Password = 3;

    }                

 }

  OK, 最後一步了,使用方法是這樣的:

  ds.Table["Customer"].Row[0][Customer.Field.ID];   //取某列值

  比起:             ds.Table["Customer"].Row[0]["CustomerID"];

  方便多了吧?

     這樣,如果物理資料庫欄位怎麼修改,程式代碼根本不用修改(連這個類本身也不用修改).


謝謝閱讀!



相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。