| 數據提供者 | 參數標記 | 綁定方式 | 名稱敏感性 |
|---|---|---|---|
| OleDb / Odbc | ? | 位置綁定(順序對應) | 不敏感(名稱僅供代碼可讀性) |
| SqlClient | @name | 命名綁定(名稱對應) | 敏感(名稱必須匹配) |
string sql = "SELECT * FROM table1 WHERE address = ? AND name = ?";
cmd.Parameters.Add("@addr", "北京"); // 對應第 1 個 ?
cmd.Parameters.Add("@name", "張三"); // 對應第 2 個 ?
// 即使名稱交換,綁定仍按添加順序
cmd.Parameters.Add("@name", "李四"); // 第 1 個 ?
cmd.Parameters.Add("@addr", "上海"); // 第 2 個 ?
string sql = "SELECT * FROM table1 WHERE address = @addr AND name = @name";
cmd.Parameters.Add("@name", "張三"); // 對應 @name
cmd.Parameters.Add("@addr", "北京"); // 對應 @addr
// 順序無關,名稱必須匹配
cmd.Parameters.Add("@addr", "上海"); // 仍對應 @addr
@name,但綁定仍靠順序)? 出現順序嚴格一致理解不同 ADO.NET 提供者的參數綁定機制,是編寫正確、可移植數據訪問代碼的基礎。OleDb/Odbc 採用位置綁定,SqlClient 採用命名綁定——這一差異直接影響參數添加順序與名稱的重要性。