思路:
原來的方案:
我們是首先根據資料庫的欄位和實際需求設計Web表單,然後從Web表單擷取提交的資料集,然後在服務段將提交的資料集和資料庫的欄位一一對應,然後再一一作過濾和處理……
現在的方案:
直接從資料庫產生架構緩衝,將每一個表的欄位及其相關屬性(類型要求、必填、長度、預設值……)儲存在全域數組中。當外部提交某張表單時,從對應的全域數組中產生相應的Dictionary對象,然後依據這個和資料表完全映射的Dictionary遍曆擷取對應的提交值,由此替代了一一對應和讀取的繁瑣過程。
實現部分被簡化為:
for i=0 to Ubound(KeysArray)-1
Key=KeysArray(i,0)
Item=Request(md5(Key))
objDict.Add Key,Item
next
也就是說,這是和傳統方案完全相反的思路,這個思路保證了所擷取的資料一定是資料庫所需要的資料,資料庫要求的資料類型或者必須為空白的資料如果出現異常則必然會出錯,等等。
最後在實現表單處理的語句簡化為,其他的一切操作都被封裝在類中:
Call System_Initialize()
Dim objUser ''建立對象
Set objUser = new TUser
objUser.Table="Comm_User" ''指定資料表
If objUser.Creat Then ''建立表的Dictionary對象
objUser.ValidAndTransfer() ''擷取資料、驗證並轉入最終的資料驅動層
objUser.Update() ''更新該表資料
End IF
Set objUser = nothing
Call System_Terminate()
與之配套的另外一個方面是從緩衝的資料表架構中按照實際表單的需要自動產生Web表單,顯示在用戶端。
在SQL Server中遍曆當前資料庫的所有使用者表
SELECT Table_name
FROM INFORMATION_SCHEMA.TABLES
WHERE (TABLE_TYPE <> ''VIEW'')
Table_name:表名;
TABLE_TYPE:表的類型;
參見:SQL Server線上手冊,T-SQL參考,資訊架構視圖。
又及:ACCESS下也可實現相關的功能[1]
在SQL Server中遍曆指定表的欄位及屬性
SELECT Column_name,IS_NULLABLE,DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE (TABLE_NAME = ''myTableName'')