Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ExecuteOnQuery不';t在使用绑定变量时更新我的表_C#_.net_Oracle - Fatal编程技术网

C# ExecuteOnQuery不';t在使用绑定变量时更新我的表

C# ExecuteOnQuery不';t在使用绑定变量时更新我的表,c#,.net,oracle,C#,.net,Oracle,我在c#中使用以下代码来更新我的表: public static int updateMytable(string accessCode, string response) { OracleConnection conn = DB.GetConnection(); conn.Open(); OracleCommand cmd = new OracleCommand(); cmd.Connection = conn;

我在c#中使用以下代码来更新我的表:

public static int updateMytable(string accessCode, string response)
    {

        OracleConnection conn = DB.GetConnection();
        conn.Open();
        OracleCommand cmd = new OracleCommand();
        cmd.Connection = conn;
        cmd.CommandText = "update mytable set response_id= :p_response , response_date=sysdate  where access_code = :p_access_code";
        cmd.Parameters.Add("p_access_code", accessCode);

        cmd.Parameters.Add("p_response", response);
        cmd.CommandType = CommandType.Text;
        int res = cmd.ExecuteNonQuery(); 
        conn.Close();
        return res;

    }
访问代码为varchar2

当我删除条件“where”时,它会更新所有内容。 当我使用字符串命令而不是绑定变量时,它也可以正常工作

string str = "update mytable set response_id= "+response+" , response_date=sysdate  where access_code = "+accessCode;

你能建议吗?

添加
cmd.BindByName=true以按名称而非位置绑定变量(
:p_response
:p_access_code
):


您需要按照SQL语句中使用的顺序在命令中添加参数。非常感谢,是的,当我将它们按相同的顺序添加时,效果很好:)put
cmd.BindByName=true并且您可以在任何顺序中使用参数非常感谢,当我将参数按cmd.parameters.Add(“p_response”,response)的顺序排列时,它工作得很好;cmd.Parameters.Add(“p_访问代码”,accessCode);
public static int updateMytable(string accessCode, string response) {
  if (string.IsNullOrEmpty(accessCode))
    return 0; 

  using (OracleConnection conn = DB.GetConnection()) {
    conn.Open();

    using (OracleCommand cmd = new OracleCommand()) {
      // When binding varaibles, use their names, not positions
      cmd.BindByName = true;
      cmd.Connection = conn;

      cmd.CommandText = 
        @"update mytable 
             set response_id   = :p_response, 
                 response_date =  sysdate  
           where access_code   = :p_access_code"; 

      cmd.Parameters.Add(":p_response", OracleDbType.Varchar2);
      cmd.Parameters.Add(":p_access_code", OracleDbType.Varchar2);   

      cmd.Parameters[":p_response"].Value = string.IsNullOrEmpty(response) 
        ? (object) (DBNull.Value) 
        : response;

      cmd.Parameters[":p_access_code"].Value = accessCode;  

      return cmd.ExecuteNonQuery();  
    }
  }
}