有这样一个sql语句:"update jx_JiaoLianFenPei set isjy = 1 where sfzh = @sfzh"
                    
 foreach (object obj in myArraylist)
   {
       AddInParameter(cmd, "sfzh", DbType.String, obj.ToString());   //添加sql语句的变量的函数
       ExcuteNonQuery(cmd);
   }
现在我要用这条循环不停的执行这条语句,而且执行每一次的@sfzh 都不同,出现的问题是,重复定义 "sfzh" !请教我该怎么做?才能怎么不重复定义这个字段,而是在开始时定义一次,在循环的时候不断修改这个值,不知道该怎么做,请各位不吝赐教!谢谢!

解决方案 »

  1.   

    你的cmd怎么写的?
    //:"update jx_JiaoLianFenPei set isjy = 1 where sfzh = @sfzh" 
                        
    int i=0;
    foreach (object obj in myArraylist) 
      { 
    //定义你的CMD的时候
    //:"update jx_JiaoLianFenPei set isjy = 1 where sfzh = @sfzh"+i.tostring();       AddInParameter(cmd, "sfzh", DbType.String, obj.ToString());  //添加sql语句的变量的函数 
          ExcuteNonQuery(cmd); 
    i++;
      } 
      

  2.   

    SQL语句放在循环内。
    foreach (object obj in myArraylist) 
      {
         string sql="update jx_JiaoLianFenPei set isjy = 1 where sfzh = @sfzh";
         //cmd=new SqlCommand(sql,conn);
         AddInParameter(cmd, "sfzh", DbType.String, obj.ToString());  //添加sql语句的变量的函数 
          ExcuteNonQuery(cmd); 
      } 
      

  3.   

    cmd.Parameters.Add("@fzh", DbType.String);   // 添加参数,但不赋值
    foreach (object obj in myArraylist) 

      cmd.Parameters["@sfzh"].Value = obj.ToString();  // 给参数赋值
       ExcuteNonQuery(cmd); 
      

  4.   

    我7楼的@fzh漏了个s,应该是@sfzh:
    cmd.Parameters.Add("@sfzh", DbType.String);   // 添加参数,但不赋值
      

  5.   

    Add没有采用两个方法的重载,不过可以试试先赋空的情况!
      

  6.   

    // 标准的 Parameters.Add() 方法是有两个参数的重载形式的:
    cmd.Parameters.Add("@sfzh", DbType.String);  // 添加参数,但不赋值 // 如果用你自己的 AddInParameter() 方法,则可以如你所说,先赋空值:
    AddInParameter(cmd, "sfzh", DbType.String, null);
    // 或:
    AddInParameter(cmd, "sfzh", DbType.String, "");