2013-03-14 71 views
4

的TADOQuery組件已「準備」屬性的手冊說,製備設置爲TRUE的情況下,ADO「準備」的條命令,這意味着什麼?TADOQuery製備

下面是手動的解釋:

集調用Execute方法來指定ADO 是否準備命令前準備。如果Prepared設置爲True,並且命令 組件連接到數據存儲,則ADO在執行命令之前準備命令 。如果Prepared設置爲False,則ADO不會準備 該命令。

它注入的參數爲SQL文本?

回答

5

下面是從2007年德爾福幫助文件中的一些更好的文檔:

使用Prepared屬性有供應商保存在CommandText屬性中指定的查詢的準備(或編譯)版本之前命令對象的第一次執行。這可能會降低命令的第一次執行速度,但是一旦提供程序編譯了命令,提供程序就會將該命令的編譯版本用於任何後續執行,這會提高性能。

如果屬性爲False,提供者將直接而不創建編譯版本執行Command對象。

如果提供者不支持命令準備,當此屬性設置爲True它可能會返回一個錯誤。如果提供程序不返回錯誤,它只是忽略準備命令的請求並將Prepared屬性設置爲False。

這基本上說,SQL語句是編譯(預解析和標記化和分析)。當查詢被多次使用時,這個編譯版本每次只需要替換參數值就可以使用,而不必重新編譯所有語句並執行其他工作。

+0

因此,如果該命令將執行一次,最好設置爲False,更一度...設置爲true! – EProgrammerNotFound 2013-03-14 12:59:46

2

TT的減少解析和編譯開銷重複執行時執行了無數次的SQL語句相關。
應用程序可以通過在每次執行時提供不同的參數集來多次執行參數化語句,而不必在參數集不同時重新構建語句。
Executing Prepared Statements