Oracle Update查询无法使用C#进行更新

时间:2013-10-22 09:37:29

标签: c# oracle

我正在尝试更新oracle中的表。但是更新不起作用,并且没有抛出任何异常。请帮助。提前谢谢。

conn.Open();
string txtInsert = "Update ORDER_DOSIMETER set FREQUENCY_CDE=:ParamFREQUENCY_CDE,  RING_SIZE=:ParamRING_SIZE where SSN=pkg_encrypt_decrypt.funcencrypt(:ParamSSN,'12345678') and DOSIMETER_TYPE= :ParamDOSIMETER_TYPE";

                OracleCommand cmd = new OracleCommand(txtInsert, conn);

                OracleParameter ParamSSN = new OracleParameter("SSN", OracleDbType.Varchar2, ParameterDirection.Input);

                ParamSSN.Value = SavePersonDetails.SSN;

                OracleParameter ParamDOSIMETER_TYPE = new OracleParameter("DOSIMETER_TYPE", OracleDbType.Varchar2, ParameterDirection.Input);
                ParamDOSIMETER_TYPE.Value = SavePersonDetails.Type;

                OracleParameter ParamRING_SIZE = new OracleParameter("RING_SIZE", OracleDbType.Varchar2, ParameterDirection.Input);
                ParamRING_SIZE.Value = SavePersonDetails.RingSize;

                OracleParameter ParamFREQUENCY_CDE = new OracleParameter("RING_SIZE", OracleDbType.Varchar2, ParameterDirection.Input);
                ParamFREQUENCY_CDE.Value = SavePersonDetails.Frequency;


                cmd.Parameters.Add(ParamSSN);                    
                cmd.Parameters.Add(ParamDOSIMETER_TYPE);                 
                cmd.Parameters.Add(ParamRING_SIZE);
                cmd.Parameters.Add(ParamFREQUENCY_CDE);

                cmd.ExecuteNonQuery();

2 个答案:

答案 0 :(得分:0)

是的,当您执行Oracle更新语句时,您需要在最后一个语句后使用Commit语句。 使用C#从OLEDB调用更新存储过程时自动提交它 的ExecuteNonQuery()

答案 1 :(得分:0)

实际上问题出在Parameters.Add()上 应根据Update语句中的出现次数添加参数。 实际订单应为:

cmd.Parameters.Add(ParamFREQUENCY_CDE);
cmd.Parameters.Add(ParamRING_SIZE);
cmd.Parameters.Add(ParamSSN);                    
cmd.Parameters.Add(ParamDOSIMETER_TYPE);