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个回答

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

Declare v_Count int
Select v_Count=count(*) From table_name Where name='利群';

if  v_Count>0  Then
Update ……
Else
Insert ……
End if
u011939977
lishuanghe214 麻烦帮我看看的JDBC方法,应该怎么改呢
大约 5 年之前 回复
u011939977
lishuanghe214 麻烦帮我看看的JDBC方法,应该怎么改呢
大约 5 年之前 回复

如果是sql语句,就用存储过程
if…… else……

如果是在程序里面,EF有自带的功能可以完成

u011939977
lishuanghe214 麻烦帮我看看的JDBC方法,应该怎么改呢
大约 5 年之前 回复

如果你使用的是MySQL,参考mysql "ON DUPLICATE KEY UPDATE" 语法

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问