自定義資料庫物理表中各列字段的名稱

2021-04-17 10:33:04 字數 1691 閱讀 6575

(一). 序幕

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

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

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

(二). 解決方法1.

其實sqldataadapter就已經實現此功能了. 它可以實現列對映,即將資料庫的列程式設計師自定義的列對應起來. 舉例說明:

設有個客戶表 customer ,下面將對其內字段進行對映,具體 **如下:

sqldataadapter myadapter = new dqldataadapter();        

//  ds.table["customer"].row[0]["id"];   //就表示客戶編號列

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"];

方便多了吧?

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

謝謝閱讀!

如何自定義Django資料庫中的字段

新建完專案之後,想要自定義字段 1 建立乙個自定義的字段 2class mycharfield models.field 3def inif self,max lenth,args,kwargs 4 super mycharfield,self init max length max lenth,a...

資料庫中的自定義錶值函式

看到別人寫的函式,一開始看不懂,於是在網上找資料,原來是錶值函式,感覺又學到了,滿滿的充實感,摘錄如下 錶值函式 錶值函式和標量值函式的不同是 錶值函式是返回乙個table型別 table型別相當與一張儲存在記憶體中的一張虛擬表.錶值函式的語法 create function schema name...

gridControl自定義列中資料

1 要實現自定義資料列設定unboundtype為string 2 要實現自定義資料列設定name和filename一樣,不要和繫結的資料來源列名一樣 3 為gridview加gv customunboundcolumndata事件 4 實現gv customunboundcolumndata事件 ...