如表:User,字段:Money1,Money2执行SqlString = "UPDATE User SET Money=Money-10000 WHERE ID=@User_ID";
Cmd.Parameters.Add("@User_ID", SqlDbType.Int).Value = User_ID.Text.Trim();我想动态的选择执行Money1=Money1-1000或者Money2=Money2-10000
将这设为参数,可不可以?
SqlString = "UPDATE User SET @Str WHERE ID=@User_ID";
Cmd.Parameters.Add("@User_ID", SqlDbType.Int).Value = User_ID.Text.Trim();
Cmd.Parameters.Add("@Str", SqlDbType.Int).Value = "Money-1000";
以上方法不行,请教可否实现?谢谢!!

解决方案 »

  1.   

    纠正一下上边的Cmd.Parameters.Add("@Str",  SqlDbType.Int).Value  =  "Money-1000";  
    为Cmd.Parameters.Add("@Str",  SqlDbType.VarChar,50).Value  =  "Money-1000";
      

  2.   

    // Cmd.Parameters.Add("@Str", SqlDbType.Int).Value = "Money-1000";
    类型是SqlDbType.Int
    值是Money-1000?
      

  3.   

    如果你实际需要的是动态计算Money-1000的值,那么这样传给存储过程是没法执行的
    你得手工分析这个表达式的值
      

  4.   

    谢谢您,
    我的本意是想动态的选择执行 Money1=Money1-10000 还是选择执行 Money2=Money2-10000,我想通过给输入参数赋值Money1=Money1-10000或者Money2=Money2-10000,可是不行,手工分析请问怎么办?谢谢!!
      

  5.   

    原来如此~
    纳看来只有这样:
    string case1 = "Money1=Money1-10000";
    string case2 = "Money2=Money2-10000";
    SqlString = string.Format("UPDATE User SET {0} WHERE ID=@User_ID",case1);
    SqlString = string.Format("UPDATE User SET {0} WHERE ID=@User_ID",case2);
    ...传给SQL语句的参数不能带有表达式(只能是值)