OleCommand的SqlText占位符的问题
http://blog.sina.com.cn/s/blog_54b576bb0100anku.html
在使用access数据时,经常使用
string strSql="insert table_name(col1,col2,...,coln) values(@col1,@col2,...,@coln)";
来向数据库插入数据,写法居然是有毛病的,参照msdn,应该改为
string strSql="insert table_name(col1,col2,...,coln) values(?,?,...,?)";
来自msdn的解释:
如果 CommandType 设置为 Text,OLE DB.NET 提供程序不支持将参数传递给 OleDbCommand 调用的 SQL 语句或存储过程的命名参数。在这种情况下,必须使用问号 (?) 占位符。例如:
SELECT * FROM Customers WHERE CustomerID = ?
因此,OleDbParameterCollection
NET中SQL的Parameter占位符的使用
在一般的情况想在
- OLE DB .NET Framework 数据提供程序和 ODBC .NET Framework 数据提供程序不支持用于将参数传递到 SQL 语句或存储过程的命名参数。在此情况下,必须使用问号 (?) 占位符,顺序必须与存储过程中所定义的参数顺序相匹配,如以下示例所示。SELECT * FROM Customers WHERE CustomerID = ?;在Access中你可以使用@CustomerId也可以使用“?”但是在DB2中你只能使用“?”,使用前者会出现错误提示。
一般的规则如下:
- SqlCommand should be '@' character
- OleDbCommand or OdbcCommand should be '?' character
- OracleCommand should be ':' character
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)