lishuanghe214 2015-01-21 02:31 采纳率: 0%
浏览 3843
已采纳

Sql语句,当在页面插入一个字段的时候,和数据库中的表字段进行对比,有这个名字就数量相加

Sql语句,当在页面插入一个字段的时候,和数据库中的表字段进行对比,有这个名字就数量相加,没有的话重新加入一条新的记录,Sql语句怎么实现?
当我页面添加的是“利群”时,添加一盒,那么数据库中利群这条记录中的num字段中的4变成5,如果是页面添加的是“黄鹤楼”同理,如果添加的不是name字段中的这两个,就新插入一条数据。Sql语句怎么写??急急急。
是Mysql的数据库图片说明

    public static void selectName(Kcgl kcgl){
        ConnectionPool pool = ConnectionPool.getInstance();
        Connection connection = pool.getConnection();//链接到数据源
        PreparedStatement ps=null;
        ResultSet rs=null;
        //Kcgl kcgls = new Kcgl();
        String seq = " select goods_stock_id,name,num from goods_stock where name = ? ";
        try {
            ps = connection.prepareStatement(seq);
            ps.setString(1, kcgl.getName());//第一个参数是设置参数的序数位置,第二个参数是设置给参数的值
            System.out.println(ps+"+ffffffff");
            rs=ps.executeQuery();//返回不为空的结果集
            //System.out.println(rs+"mmmmmmmmm");

            if(rs==null){
                //String seqq = "update goods_stock set num=? where goods_stock_id = ?";
                System.out.println(rs.getString("name")+"+pppppppppppp");
                String seqq = "INSERT INTO goods_stock (name, spec, num, goods_type_id) VALUES (?, ?, ?, ?)";
                    ps = connection.prepareStatement(seqq);
                    ps.setString(1, kcgl.getName());  
                    ps.setString(2, kcgl.getSpec());  
                    ps.setInt(3, kcgl.getNum());
                    ps.setString(4, kcgl.getGoods_type_id());  
                    // 执行更新操作  
                    ps.executeUpdate(); 
            }
            else{
                while(rs.next()) {//取得结果集,一定要用while,循环输出
                System.out.println("555555555555");
                int num2 = Integer.valueOf(kcgl.getNum())+Integer.valueOf(rs.getInt("num"));
                String seq3 = "update goods_stock set num=? where goods_stock_id = ?";
                    ps = connection.prepareStatement(seq3);
                    ps.setInt(1, kcgl.getNum());  
                    ps.setString(2, kcgl.getGoods_stock_id()); 
                    ps.executeUpdate(); 
                }
            }

        }
        catch(SQLException e)
        {
            e.printStackTrace();
            //return null;
        }
        finally
        {   DBUtil.closeResultSet(rs);
            DBUtil.closePreparedStatement(ps);
            pool.freeConnection(connection);
        }
    }
    这个是我的那个JDBC的方法,应该怎么改啊,
  • 写回答

4条回答 默认 最新

  • hi_shu 2015-01-21 02:46
    关注

    这不是一条sql语句就能解决的,用存储过程,很简单。

    Declare v_Count int
    Select v_Count=count(*) From table_name Where name='利群';
    
    if  v_Count>0  Then
    Update ……
    Else
    Insert ……
    End if
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题