(一). 序幕
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事件 ...