起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8096|回复: 21

[处理中5] KSQL执行update,金额小数的疑问

  [复制链接]

19

主题

85

帖子

277

积分

中级会员

Rank: 3Rank: 3

积分
277
QQ
发表于 2014-5-14 10:01:52 | 显示全部楼层 |阅读模式
我的金额数据类型为Decimal(18,2),值为559227.02,当我用KSQL.executeUpdate执行修改金额时,数据库自动舍去了2分钱,用conn.prepareStatement是正常的,很疑惑

45

主题

4492

帖子

3960

积分

论坛元老

Rank: 8Rank: 8

积分
3960
QQ
发表于 2014-5-14 10:04:15 | 显示全部楼层
检查你的值,从获取到赋值这一过程有没有变量;
你可以将代码贴一下,大家帮你分析分析 ,
你可以可以在JS代码是 写debugger 分步调试一下,看看值是在那里发生了变化。
向前进,向前进,我们……
回复 支持 反对

使用道具 举报

19

主题

85

帖子

277

积分

中级会员

Rank: 3Rank: 3

积分
277
QQ
 楼主| 发表于 2014-5-14 10:07:53 | 显示全部楼层
没有JS,直接执行数据库

                Table table =KSQL.select("select gl_balance.* from gl_balance gl_balance where  gl_balance.facc_name='GL三店及公司支出' order by gl_balance.famount_date ,gl_balance.fopreattime ", null, "/graylaus/gl/data", null);
                BigDecimal balance=new BigDecimal(559227.02);
                if (table.size() > 0) {
                       Iterator<Row> rows = table.iterator();
                                while (rows.hasNext()) {
                                        Row row = rows.next();
                                        String fid=row.getString("gl_balance");
                                        BigDecimal money=row.getDecimal("finmoney");
                                        balance=balance.add(money);
                                         String sql="update gl_balance gl_balance set gl_balance.fbalance_money="+balance+" where gl_balance='"+ fid +"' ";
                                        System.out.println(sql);
                                        KSQL.executeUpdate(sql, null, "/graylaus/gl/data", null);
                                       
                                       
                                        /*Connection conn = ModelUtils.getConnectionInTransaction("/graylaus/gl/data");
                                        PreparedStatement pstmt = conn.prepareStatement("update gl_balance  set fbalance_money=? where fid=? ");
                                        pstmt.setDouble(1, balance.doubleValue());
                                        pstmt.setString(2, fid);
                                         pstmt.executeUpdate();*/
                                }
               }
回复 支持 反对

使用道具 举报

45

主题

4492

帖子

3960

积分

论坛元老

Rank: 8Rank: 8

积分
3960
QQ
发表于 2014-5-14 10:17:54 | 显示全部楼层
interzym 发表于 2014-5-14 10:07
没有JS,直接执行数据库

                Table table =KSQL.select("select gl_balance.* from gl_balance gl_balance w ...

1、检查数据库中对应数据类型是什么类型的?是不是你在BIZ层修改了关系以及小数位置数,而没有生成数据库表?

2、将你的KSQL以及SQL输出一下,看一下你 KSQL和SQL中的 balance 值是多少

输出KSQL与SQL需要修改配置文件 ,见下面的这个贴子; 7楼
http://bbs.justep.com/thread-33524-1-1.html
向前进,向前进,我们……
回复 支持 反对

使用道具 举报

19

主题

85

帖子

277

积分

中级会员

Rank: 3Rank: 3

积分
277
QQ
 楼主| 发表于 2014-5-14 10:31:53 | 显示全部楼层
肯定有生成数据库表的,
QQ图片20140514102943.jpg


这是LOG
2014-05-14 10:25:46 [SQL Time]sql 执行时间:16ms, exec KSQL: update gl_balance gl_balance set gl_balance.fbalance_money=3986527.0200000000186264514923095703125 where gl_balance='7B8B7940F9F541938B8E9051F693C631'
  --> sql:UPDATE GL_BALANCE SET GL_BALANCE.FBALANCE_MONEY = ?  WHERE GL_BALANCE.fID = ?
--> binds:[3986527.0, 7B8B7940F9F541938B8E9051F693C631]
回复 支持 反对

使用道具 举报

19

主题

85

帖子

277

积分

中级会员

Rank: 3Rank: 3

积分
277
QQ
 楼主| 发表于 2014-5-14 10:59:20 | 显示全部楼层
结贴,找到原因了 add方法的问题
回复 支持 反对

使用道具 举报

19

主题

85

帖子

277

积分

中级会员

Rank: 3Rank: 3

积分
277
QQ
 楼主| 发表于 2014-5-14 11:03:45 | 显示全部楼层
我刚刚弄错了,执行的是conn,还是不行,我新建一个表测试小数又没问题
回复 支持 反对

使用道具 举报

19

主题

85

帖子

277

积分

中级会员

Rank: 3Rank: 3

积分
277
QQ
 楼主| 发表于 2014-5-14 11:10:40 | 显示全部楼层
做了一个测试
5.jpg

                        BigDecimal balance=new BigDecimal(559227.02);
                BigDecimal money=new BigDecimal(5100.00);
                BigDecimal a=balance.add(money);
                String sql="insert into test test(test,test.money) values('qweqwe3',"+ a +")";
                KSQL.executeUpdate(sql, null, "/graylaus/gl/data", null);
结果还是舍去了
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35920
发表于 2014-5-14 11:30:01 | 显示全部楼层
用SQL.executeUpdate去执行看一下
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

19

主题

85

帖子

277

积分

中级会员

Rank: 3Rank: 3

积分
277
QQ
 楼主| 发表于 2014-5-14 11:38:46 | 显示全部楼层
SQL执行没问题
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-5 15:10 , Processed in 0.063705 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表