Db.update数据库 问题

boolean b = PayService.me.NameMobileExists(mobile);
if (b==true){
      render("Reg.html");
    }else {
    //参数有中文则需要URL编码
    String url="https://api.xiuxiu888.com/creat_order?id="+codepay_id+"&pay_id="+pay_id+"&price="+price+"&type="+type+"&token="+token+"&param="+param+"&notify_url="+notify_url+"&return_url="+return_url+"&mobile="+mobile;
    redirect(url);
    String sql = "UPDATE CSAlogin SET RmbPoint = RmbPoint + #(price) WHERE mobile= #para(mobile)";
    Kv kv = Kv.by("price", price).set("mobile", mobile);
    Db.templateByString(sql, kv).update();
}
在实现数据库中没有的字段相加减时 Db.templateByString报错 是不是需要导入对应的jar报模板  谢谢!!


评论区

zzutligang

2020-05-29 14:31

你这样写就可以啊,我刚实验了,mysql5.7。你是遇到问题了?

JFinal

2020-05-29 14:43

你的 sql 中只有一个问号,但你传入了两个参数,所以是错误的,改成下面这样:
Db.update("UPDATE CSAlogin SET RmbPoint=RmbPoint + price WHERE mobile=?", mobile);

如果你要添加的这个 price 并不是数据库中字段的值,改成下面这样来做:
String sql = "UPDATE CSAlogin SET RmbPoint = RmbPoint + #(price) WHERE mobile= #para(mobile)";

Kv kv = Kv.by("price", 这里填入你希望的值).set("mobile", mobile);
Db.templateByString(sql, kv).update();

JFinal

2020-05-29 14:44

jfinal 的 active record 模块的 sql 管理功能极度强大、方便,一定要用上

这个功能可以在外部文件中管理 sql , 也可以在 java 代码中写 sql 模板来使用,通过 Db.templateByString(...) 就可以用上了

文档中非常详细:
https://jfinal.com/doc/5-13

liming_code

2020-05-29 17:05

@JFinal ok 在调试 另外有jFinal相关的ajax实列参考么?

liming_code

2020-05-29 17:06

@zzutligang 是这样 price在数据库是没字段的 price是额外的页面参数传递

JFinal

2020-05-29 18:16

@liming_code jfinal 俱乐部项目 jfinal-club 中几乎全是 ajax 提交,有需要可以加入俱乐部:
https://jfinal.com/club

花了钱的其实是最省钱的,时间很值钱, 不是人人都懂的道理

JFinal

2020-05-29 18:19

@JFinal 没字段,你可以用 #(price), 然后向 templateByString(...) 传入 price 变量就可以了,代码在上面已经给出了

liming_code

2020-05-29 19:02

@JFinal jFinal cloub 项目有支付相关的功能是把?

JFinal

2020-05-29 19:22

@liming_code 有支付功能,简单好用

热门反馈

扫码入社