写的sql语句需要用到占位符时,不可过分依赖键值对,顺序很重要,调用存储过程也一样
他不会根据你在c#中设置的键去匹配数据库中的键而赋值
例如:
select * from table where column1 = ? and column2 = ?;
command.parameters.add("column2",oledbdatatype.varchar).value=xxx;
command.parameters.add("column1",oledbdatatype.varchar).value=xxx;
这样就会有问题
select * from table where column1 = :key1 and column2 = :key2;
command.parameters.add("key2",oracledbtype.varchar).value=xxx;
command.parameters.add("key1",oracledbtype.varchar).value=xxx;
这样就不会有问题
第一个是期望和数据库中的字段值匹配,第二个是和c#中的自己定义的key1匹配