在嘗試除錯一個查詢 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中文網其他相關文章!