首頁 >後端開發 >C++ >使用文字指令時,為什麼 OleDbCommand 中的參數順序很重要?

使用文字指令時,為什麼 OleDbCommand 中的參數順序很重要?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-26 15:38:16898瀏覽

Why Does Parameter Order Matter in OleDbCommand When Using Text Commands?

OleDbCommand 參數順序與優先權

在嘗試偵錯查詢時,發現 OleDbCommand 中的參數順序會影響結果。當亂序加入參數時:

cmd.Parameters.Add("@dtDebut", OleDbType.Date).Value = dateTraitementDebut;
cmd.Parameters.Add("@dtFin", OleDbType.Date).Value = dateTraitementFin;
cmd.Parameters.Add("@id", OleDbType.Integer).Value = idSociete;

沒有回傳結果。但是,當參數依照查詢中出現的順序加入時:

cmd.Parameters.Add("@id", OleDbType.Integer).Value = idSociete;
cmd.Parameters.Add("@dtDebut", OleDbType.Date).Value = dateTraitementDebut;
cmd.Parameters.Add("@dtFin", OleDbType.Date).Value = dateTraitementFin;

查詢正常運作。

這個差異源自於 OleDbCommand 不支援命名的事實文字指令的參數。如 MSDN 上所述:

當 CommandType 設定為 Text 時,OLE DB .NET 提供者不支援將參數傳遞給 SQL 語句或 OleDbCommand 呼叫的預存程序的命名參數。在這種情況下,必須使用問號 (?) 佔位符。

因此,在 OleDbCommand 中使用文字指令時,參數會新增到集合中的順序至關重要。此順序必須直接對應於命令文字中佔位符問號的順序。

以上是使用文字指令時,為什麼 OleDbCommand 中的參數順序很重要?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn