首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

ASP/VBScript 檢查資料表是否存在欄位並動態新增 (ADO Schema 查詢)

     編輯:關於SqlServer

    程式碼 (Classic ASP / VBScript)

    <%
    Dim i, Rs, Sql, Table, Column, Bool
    Table = "A"
    Column = "B"
    Bool = False
    
    Sql = "SELECT * FROM [" & Table & "]"
    Set Rs = Conn.Execute(Sql)  ' 需先建立 Conn 連線物件
    
    For Each i In Rs.Fields
        If i.Name = Column Then
            Bool = True
            Exit For
        End If
    Next
    
    If Bool Then
        Response.Write("在《" & Table & "》表中,存在《" & Column & "》欄位!")
    Else
        Response.Write("在《" & Table & "》表中,不存在《" & Column & "》欄位!")
    End If
    %>

    原理解析

    1. 開啟 SELECT * FROM Table (不實際取資料,僅取得 Recordset.Fields 集合)。
    2. 遍歷 Fields 比對欄位名稱。
    3. 若不存在,後續可動態執行 ALTER TABLE A ADD B datatype (需依資料庫語法調整)。

    改進建議 (效能與安全)

    • 避免 SELECT *:改用 SELECT TOP 0 * FROM ... 或直接查詢系統目錄 (INFORMATION_SCHEMA.COLUMNS / sys.columns) 更輕量。
    • 參數化:表名/欄位名無法參數化,嚴格驗證輸入防注入。
    • 權限:連線帳號需具備 ALTER TABLE 權限。

    現代替代方案 (T-SQL 純資料庫端)

    IF NOT EXISTS (SELECT 1 FROM sys.columns WHERE object_id = OBJECT_ID('A') AND name = 'B')
    BEGIN
        ALTER TABLE A ADD B VARCHAR(100) NULL; -- 依需求調整型別
    END
    將判斷邏輯下推至資料庫層,避免應用層往返,並可封裝為預存程序統一管理。
    1. 上一篇文章:
    2. 下一篇文章:
    Copyright © 程式碼之家 All Rights Reserved