繫結參數 ODBC

SQL 陳述式中的每一個參數都必須與應用程式的變數相關聯或繫結,才能執行該陳述式。 當應用程式將變數繫結至參數時,其會將變數 - 位址、C 資料類型等描述至驅動程式。 其也會描述參數本身 - SQL 資料類型、有效位數等等。 驅動程式會將這項資訊儲存在其為該陳述式維護的結構中,並在執行陳述式時使用資訊從變數擷取值。

參數可以在執行陳述式之前的任何時候繫結或重新繫結。 如果在執行陳述式之後重新繫結參數,則不會於再次執行陳述式之前套用繫結。 如需將參數繫結至不同的變數,應用程式會直接將參數與新的變數重新繫結,且系統會自動釋放先前的繫結。

變數會與參數保持繫結,直到不同的變數繫結至參數為止、所有參數都透過使用 SQL_RESET_PARAMS 選項呼叫 SQLFreeStmt 來解除繫結為止,或直到釋放陳述式為止。 基於這個理由,應用程式必須確定變數不會在解除繫結之前受到釋放。 如需詳細資訊,請參閱配置並釋放緩衝區

因為參數繫結只是儲存在驅動程式針對陳述式所維護結構中的資訊,所以可以依任何順序設定。 它們也獨立於執行的 SQL 陳述式。 例如,假設應用程式繫結三個參數,然後執行下列 SQL 陳述式:

INSERT INTO Parts (PartID, Description, Price) VALUES (?, ?, ?)  

如果應用程式接著會立即執行 SQL 陳述式

SELECT * FROM Orders WHERE OrderID = ?, OpenDate = ?, Status = ?  

在相同的陳述式控制代碼上,因為 INSERT 陳述式的參數繫結是儲存在陳述式結構中的繫結,所以會使用這些繫結。 在大部分情況下,這是不佳的程式設計做法,最好避免。 相反地,應用程式應該使用 SQL_RESET_PARAMS 選項呼叫 SQLFreeStmt,以解除繫結所有舊參數,然後繫結新的參數。

此章節包含下列主題。