C#执行Oracle的Sql语句 参数顺序问题

以下面代码为例:


            OracleConnection cn = new OracleConnection(connString);

            string sql = @"delete from table1 t where t.column1=:para_1 and t.column2=:para_2 ";
            OracleCommand cmd = new OracleCommand();
            cmd.Connection = cn;
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = sql;

            List list = new List();

            list.Add(new OracleParameter("para_2", OracleDbType.Varchar2, "1",ParameterDirection.Input));
            list.Add(new OracleParameter("para_1", OracleDbType.Varchar2, "1001",ParameterDirection.Input));

            cmd.Parameters.AddRange(list.ToArray());

            int ret = cmd.ExecuteNonQuery();


执行上述sql时,出现不能删除想要的数据时,考虑参数顺序问题


解决办法1,把参数按照sql中参数出现的顺序排序

list.Add(new OracleParameter("para_1", OracleDbType.Varchar2, "1001",ParameterDirection.Input));
list.Add(new OracleParameter("para_2", OracleDbType.Varchar2, "1",ParameterDirection.Input));
 
  

 
  

解决办法2,设置cmd按照变量名绑定参数

cmd.BindByName=true;


你可能感兴趣的:(oracle)