ssh存储过程无法改变数据库数据

使用ssh存储过程实现购物车添加和商品列表的数据减少,程序执行成功但是数据库数据没变

java调用

public int add(int sid,int num,double total,int uid) {        try {            this.getSession().getNamedQuery("update").setParameter(0, sid).setParameter(1, num)
            .setParameter(2, total).setParameter(3, uid);            return 1;
        } catch (Exception e) {            // TODO: handle exception            e.printStackTrace();            return 0;
        }
    }

调用mysql存储过程代码

 <sql-query name="update" callable="true">
        {call zcxg(?,?,?,?)}    </sql-query>

mysql的存储过程详细代码


create procedure `zcxg`(in sid int,in num int,in total double,in uid int)beginupdate shop as s set s.`number`=(s.`number`-`num`) where s.`id`=`sid`;insert into cart(number,sid,total,uid) values(`num`,`sid`,`total`,`uid`);commit;end



慕娘9325324
浏览 748回答 1
1回答

慕斯王

将&nbsp;&nbsp;this.getSession().getNamedQuery("update").setParameter(0,&nbsp;sid).setParameter(1,&nbsp;num) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.setParameter(2,&nbsp;total).setParameter(3,&nbsp;uid);换成&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;procdure&nbsp;=&nbsp;"{call&nbsp;cl(?,?,?,?)}"; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CallableStatement&nbsp;cs&nbsp;=&nbsp;this.getHibernateTemplate().getSessionFactory().getCurrentSession().connection().prepareCall(procdure); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cs.setInt(1,&nbsp;sid); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cs.setInt(2,&nbsp;num); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cs.setDouble(3,&nbsp;total); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cs.setInt(4,&nbsp;uid); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cs.execute();
打开App,查看更多内容
随时随地看视频慕课网APP