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中文網其他相關文章!