核心代碼片段
Dim cat, col
Set cat = Server.CreateObject("ADOX.Catalog")
Set col = Server.CreateObject("ADOX.Column")
cat.ActiveConnection = conn ' 已開啟的 ADO Connection 物件
Set col = cat.Tables("TableName").Columns("ColumnName")
' 取得欄位資料型別 (對應 DataTypeEnum 常數)
Dim lType
lType = col.Type
' 取得欄位定義長度
Dim lSize
lSize = col.DefinedSize
關鍵說明
- ADOX.Catalog:提供資料庫結構的目錄視圖,需引用 `Microsoft ADO Ext. for DDL and Security` (msadox.dll)。
- Column.Type:回傳整數常數(如 202 = adVarWChar, 3 = adInteger, 135 = adDBTimeStamp),可參考 `DataTypeEnum` 列舉對照。
- Column.DefinedSize:回傳欄位定義的最大長度(字元型為字元數,數值型為位元組數)。
- 適用場景:動態建立表單驗證、產生資料字典文件、跨資料庫結構比對等需在執行期讀取結構描述的 ASP 應用。
完整範例:列出指定資料表所有欄位屬性
Sub ListTableColumns(ByVal conn, ByVal tableName)
Dim cat, tbl, col
Set cat = Server.CreateObject("ADOX.Catalog")
cat.ActiveConnection = conn
Set tbl = cat.Tables(tableName)
Response.Write "| 欄位名 | 型別 | 長度 | 允許Null |
"
For Each col In tbl.Columns
Response.Write ""
Response.Write "| " & col.Name & " | "
Response.Write "" & col.Type & " | " ' 可轉換為可讀名稱
Response.Write "" & col.DefinedSize & " | "
Response.Write "" & IIf(col.Attributes And 1, "否", "是") & " | " ' adColNullable = 1
Response.Write "
"
Next
Response.Write "
"
End Sub