OdbcCommand.CommandText 屬性

定義

取得或設定 SQL 陳述式或預存程序以對資料來源執行。

public:
 virtual property System::String ^ CommandText { System::String ^ get(); void set(System::String ^ value); };
public:
 property System::String ^ CommandText { System::String ^ get(); void set(System::String ^ value); };
public override string CommandText { get; set; }
public string CommandText { get; set; }
member this.CommandText : string with get, set
Public Overrides Property CommandText As String
Public Property CommandText As String

屬性值

要執行的 SQL 陳述式或預存程序。 預設值為空字串 ("")。

實作

備註

CommandType當屬性設定為 StoredProcedure時,CommandText應該使用標準 ODBC 預存程式逸出序列來設定 屬性。 CommandText將 設定為預存程式的名稱,不會像其他 .NET Framework 數據提供者一樣運作。

許多語言功能,例如外部聯結和純量函式呼叫,通常是由數據源實作。 即使這些功能的語法通常是數據源特定的語法。 因此,ODBC 會定義逸出序列,其中包含下列語言功能的標準語法:

  • 日期、時間、時間戳記和日期時間間隔常值

  • 純量函式,例如數值、字串和資料類型轉換函式

  • LIKE 述詞逸出字元

  • 外部聯結

  • 程序呼叫

ODBC 所使用的逸出序列如下所示:

{extension}  

ODBC 驅動程式會辨識並剖析這個逸出序列。 然後,它們會以數據源特定的文法取代任何逸出序列。

程式是儲存在數據源的可執行物件。 通常,它是先行編譯的一或多個 SQL 陳述式。 用來呼叫程序的逸出序列為

{[?=]call procedure-name[([parameter][,[parameter]]...)]}  

其中 procedure-name 指定程式的名稱,並 parameter 指定程序參數。

當您呼叫其中一個 Execute 方法 (時,此命令會執行此預存程式, ExecuteReader 例如 或 ExecuteNonQuery) 。

如果目前的連接正在執行或擷取作業,則無法設定 ConnectionCommandTypeCommandText 屬性。

ODBC.NET 提供者不支援將參數傳遞至 SQL 語句的具名參數,或當 設定為 TextCommandTypeOdbcCommand呼叫的預存程式。 在此情況下,必須使用問號 (?) 佔位符。 例如:

SELECT * FROM Customers WHERE CustomerID = ?  

因此,加入 OdbcParameterCollection 對象的順序OdbcParameter必須直接對應至 參數的問號佔位元位置。

如果參數包含 Null 值,則 .NET Framework DATA Provider for ODBC 仍會系結該參數,但如果已使用 SQL_DEFAULT_PARAM 定義,則會使用預設參數,而不是 null 值。 例如, OdbcParameterCollection

{1, null, 2}  

傳遞至 CommandText 屬性:

{call sp(?, ?, ?)}  

會導致 .NET Framework DATA Provider for ODBC 將第一個參數系結至值 1、第三個參數係結至值 2,並將第二個參數係結為 SQL_DEFAULT_PARAM。 不過,此行為與驅動程式相依。 如果驅動程式不支援這項功能,就不要傳入 參數的值。 例如,使用 OdbcParameterCollection

{1, 2}  

並將 屬性設定 CommandText 為下列專案:

{call sp(?, null, ?)}  

注意

如果省略參數,則從其他參數分隔的逗號仍然必須出現。 如果省略了輸入或輸入/輸出參數,程序就會使用參數的預設值。 指定輸入或輸入/輸出參數預設值的另一個方法,是將繫結至參數之長度/指標緩衝區的值設定成 SQL_DEFAULT_PARAM。

適用於

另請參閱