写sql语句时不要使用重复参数
2008-11-03 17:47
381 查看
在写程序时,会员累计消费需要+消费额,会员余额需要-消费额,我就用了同一个参数代替消费'额,结果碰了一鼻子灰.让我头疼了几乎一下午,最后还是项目经理指点迷津才得以解决.
原来的错误代码:
with dataM.Q_xfgl_jz_gxhy do //更改会员消费次数、消费累计金额、卡内余额等信息
begin
close;
sql.Clear;
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 ');
sql.Add('WHERE (((hy_id)=:hy_id));');
Parameters.ParamByName('xfje').Value := xfje;
Parameters.ParamByName('jf').Value := strtofloat(lbl4.Caption);
Parameters.ParamByName('jfys').Value := jfys;
Parameters.ParamByName('hy_id').Value := hy_id;
end;
后来的正确代码:
with dataM.Q_xfgl_jz_gxhy do //更改会员消费次数、消费累计金额、卡内余额等信息
begin
close;
sql.Clear;
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 ');
sql.Add('WHERE (((hy_id)=:hy_id));');
Parameters.ParamByName('xfje').Value := xfje;
Parameters.ParamByName('xfje1').Value := xfje;
Parameters.ParamByName('jf').Value := strtofloat(lbl4.Caption);
Parameters.ParamByName('jfys').Value := jfys;
Parameters.ParamByName('hy_id').Value := hy_id;
end;
没改之前程序编译 运行没有任何错误弹出,就是hy-je这个字段执行后为空. 把第二处的xfje改为xfje1,并给xfje1赋值后执行成功!
原来的错误代码:
with dataM.Q_xfgl_jz_gxhy do //更改会员消费次数、消费累计金额、卡内余额等信息
begin
close;
sql.Clear;
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 ');
sql.Add('WHERE (((hy_id)=:hy_id));');
Parameters.ParamByName('xfje').Value := xfje;
Parameters.ParamByName('jf').Value := strtofloat(lbl4.Caption);
Parameters.ParamByName('jfys').Value := jfys;
Parameters.ParamByName('hy_id').Value := hy_id;
end;
后来的正确代码:
with dataM.Q_xfgl_jz_gxhy do //更改会员消费次数、消费累计金额、卡内余额等信息
begin
close;
sql.Clear;
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 ');
sql.Add('WHERE (((hy_id)=:hy_id));');
Parameters.ParamByName('xfje').Value := xfje;
Parameters.ParamByName('xfje1').Value := xfje;
Parameters.ParamByName('jf').Value := strtofloat(lbl4.Caption);
Parameters.ParamByName('jfys').Value := jfys;
Parameters.ParamByName('hy_id').Value := hy_id;
end;
没改之前程序编译 运行没有任何错误弹出,就是hy-je这个字段执行后为空. 把第二处的xfje改为xfje1,并给xfje1赋值后执行成功!
相关文章推荐
- 写sql语句时不要使用重复参数
- 不要拼接Sql,而要使用参数的好处之2
- 在ADO.NET中使用参数化SQL语句的大同小异
- 使用GO将SQL语句重复执行多次
- 在ADO.NET中使用参数化SQL语句的大同小异
- 如何使用Oracle查询并删除重复记录的SQL语句
- Mybatis SQL映射语句中参数注解使用规则
- 使用SQL语句对重复记录查询、统计重复次数、删除重复数据
- oracle nvl函数的使用与参数可以是sql语句使用说明
- 两种使用nuzt接收动态参数编写SQL语句进行分页查询
- Sql Server cursor 的使用处理重复数据 动态拼接 SQL语句
- 在ADO.NET中使用参数化SQL语句的大同小异
- MySQL中limit使用动态参数的解决方法(拼接SQL字符串语句来执行SQL)
- SQL:如何在LIKE语句中使用参数,以及动态执行SQL语句
- mybatis sql in 查询(mybatis sql语句传入参数是list)mybatis中使用in查询时in怎么接收值
- 在ADO.NET中使用参数化SQL语句的大同小异
- vb6.0 使用带@参数的sql语句
- 【PB】使用参数指定的SQL语句向指定的下拉列表框中添加数据
- 信息流zt_使用json参数拼接sql语句
- 营配数据质量核查,关于营销mis系统与配电gis系统里面的sql语句查询,做为积累使用,下次就不用重复写同样的语句了。