ADO.NET 与 ORACLE
在使用.Net使用OracleParameter进行Oracle数据库操作的时候,不少程序员习惯性的使用SqlParameter的语法来定义参数,此时会发生操作失败提示,提示信息为:ORA-01036: illegal variable name/number
这是因为Oracle和SQLServer针对查询参数化的语法不同,在操作SQLServer的时候使用的是@ParameterName,而Oracle使用的是:ParameterName
而且sql伪语句也有相应的变化,找了好久的资料,都没找到,结果仔细分析了Oracle查询的赋值语法,终于把问题给解决了,对比一下sqlserver和oracle的区别:
String sql = "delete from postinfo where id=@id";
SqlParameter p1 = new SqlParameter("@id", id);
String sql = "delete from postinfo where id=:id";
OracleParameter p1 = new OracleParameter("id", id);
另外就是需要检查数据类型是否相符,此处附上Oracle和SQLServer在C#中的数据类型对照表。
Oracle在C#中的数据类型对照表
SQLServer在C#中的数据类型对照表