写sql语句时不要使用重复参数

来源:互联网 发布:在淘宝上买药的流程 编辑:程序博客网 时间:2024/05/16 08:49

在写程序时,会员累计消费需要+消费额,会员余额需要-消费额,我就用了同一个参数代替消费'额,结果碰了一鼻子灰.让我头疼了几乎一下午,最后还是项目经理指点迷津才得以解决.

原来的错误代码:

  1.   with dataM.Q_xfgl_jz_gxhy do //更改会员消费次数、消费累计金额、卡内余额等信息
  2.   begin
  3.     close;
  4.     sql.Clear;
  5.     sql.Add('UPDATE hy SET hy_xfje = hy_xfje+:xfje, hy_xfcs = hy_xfcs+1, hy_je = hy_je-:xfje, hy_jf = hy_jf+:jf, hy_jfsyje = hy_jfsyje+:jfys ');
  6.     sql.Add('WHERE (((hy_id)=:hy_id));');
  7.     Parameters.ParamByName('xfje').Value := xfje;
  8.     Parameters.ParamByName('jf').Value := strtofloat(lbl4.Caption);
  9.     Parameters.ParamByName('jfys').Value := jfys;
  10.     Parameters.ParamByName('hy_id').Value := hy_id;
  11.   end;

后来的正确代码:

  1.   with dataM.Q_xfgl_jz_gxhy do //更改会员消费次数、消费累计金额、卡内余额等信息
  2.   begin
  3.     close;
  4.     sql.Clear;
  5.     sql.Add('UPDATE hy SET hy_xfje = hy_xfje+:xfje, hy_xfcs = hy_xfcs+1, hy_je = hy_je-:xfje1, hy_jf = hy_jf+:jf, hy_jfsyje = hy_jfsyje+:jfys ');
  6.     sql.Add('WHERE (((hy_id)=:hy_id));');
  7.     Parameters.ParamByName('xfje').Value := xfje;
  8.     Parameters.ParamByName('xfje1').Value := xfje;
  9.     Parameters.ParamByName('jf').Value := strtofloat(lbl4.Caption);
  10.     Parameters.ParamByName('jfys').Value := jfys;
  11.     Parameters.ParamByName('hy_id').Value := hy_id;
  12.   end;

 

没改之前程序编译 运行没有任何错误弹出,就是hy-je这个字段执行后为空.   把第二处的xfje改为xfje1,并给xfje1赋值后执行成功!

原创粉丝点击