首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

OleDbCommand 參數順序與命名參數陷阱:你真的懂嗎?

     編輯:關於.NET

維護舊專案大量使用 OleDbConnection(Oracle 10g),對參數順序與命名參數行為不清。測試發現雖支援命名參數,但參數綁定順序仍依 SQL 中出現順序,而非參數集合添加順序。

四個測試案例

  1. 正常順序:insert into B(A,B) values(:a,:b),參數加入 a、b → 正確存入 a、b。
  2. SQL 參數順序互換:insert into B(B,A) values(:b,:a),參數加入 a、b → 實際存入 b、a(錯位)。
  3. PL/SQL 區塊正常:select ... where a=:a and b=:b ... insert values(:a,:b) → 正確。
  4. PL/SQL WHERE 條件順序互換:where b=:b and a=:a → 參數綁定錯位,存入 b、a。

結論:OleDbCommand 以參數在 SQL 文本中**首次出現順序**綁定參數集合中的同名參數,與添加順序無關。使用區塊語句時特別需注意 WHERE 條件與 VALUES 子句中參數出現順序一致。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved