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条)

报告相同问题?

悬赏问题

  • ¥20 Python安装cvxpy库出问题
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥15 python天天向上类似问题,但没有清零
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题