首頁 >後端開發 >C++ >使用問號佔位符的 OleDbCommand 查詢中參數順序重要嗎?

使用問號佔位符的 OleDbCommand 查詢中參數順序重要嗎?

Barbara Streisand
Barbara Streisand原創
2024-12-27 07:53:08310瀏覽

Does Parameter Order Matter in OleDbCommand Queries Using Question Mark Placeholders?

OleDbCommand 參數順序和優先權

在嘗試除錯一個查詢 40 分鐘後,發現參數的順序起著至關重要的作用。有問題的查詢如下:

SELECT * FROM tblSomething WHERE id = @id AND debut = @dtDebut AND fin = @dtFin

但是,當以下順序新增參數時:

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

沒有回傳結果。顛倒@dtDebut和@dtFin的順序解決了這個問題。

最初假設引入命名參數是為了避免這種順序依賴。但是,根據 MSDN:

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

因此,在使用使用問號佔位符指定的參數的 OleDbCommand 時,必須保持參數的正確順序。

以上是使用問號佔位符的 OleDbCommand 查詢中參數順序重要嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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