首頁 > 後端開發 > C++ > 當 CommandType 為 Text 時,OleDbCommand 參數順序重要嗎?

當 CommandType 為 Text 時,OleDbCommand 參數順序重要嗎?

DDD
發布: 2024-12-30 17:46:12
原創
149 人瀏覽過

Does OleDbCommand Parameter Order Matter When CommandType is Text?

OleDbCommand 參數順序與優先權:期望不一致的情況

使用OleDbCommand 建構查詢時,確保參數順序準確至關重要遵循SQL語句中的順序。一個常見的誤解是假設命名參數消除了這個要求。然而,正如深入偵錯會話所揭示的那樣,當 CommandType 設定為 Text 時,OleDbCommand 缺乏對命名參數的支援。

在給定的範例中:

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;
登入後複製

但是沒有回傳結果,說明不一致。重新排序參數以符合 SQL 語句後,查詢將成功執行:

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

這與 http://msdn.microsoft.com/en-us/library/system.data 上的文件一致。 oledb.oledbcommand.parameters.aspx,它明確指出 OleDbCommand 不支援文字模式下 SQL 語句的命名參數。相反,必須使用問號 (?) 佔位符,並且集合中 OleDbParameter 物件的順序必須嚴格對應於它們在命令文字中的位置。

以上是當 CommandType 為 Text 時,OleDbCommand 參數順序重要嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板