插入数据的问题

插入数据的问题

public class InsertCommand implements Command{
    @Override
    public void execute() {
        Scanner in = new Scanner(System.in);
        System.out.println("商品名称:");
        String name = in.next();
        System.out.println("商品价格:");
        Float price = in.nextFloat();
        System.out.println("商品描述:");
        String desp = in.next();
        Connection connection = null;
        PreparedStatement pstmt = null;
        try{
            connection = DbUtils.getConnection();
            String sql = "INSERT INTO goods SET name = ?, price = ?, desp = ?";
            pstmt = connection.prepareStatement(sql);
            pstmt.setString(1,name);
            pstmt.setFloat(2,price);
            pstmt.setString(3,desp);
            int cnt = pstmt.executeUpdate();
        }catch(Exception e){
            e.printStackTrace();
        }finally {
            DbUtils.closeConnection(connection,pstmt,null);
        }
    }
}

https://img1.sycdn.imooc.com//climg/636f00de0974a65405550170.jpg

按以上代码插入数据后。我在Navicat中执行了删除语句把耳机这条记录删除。然后再在idea重新插入耳机数据后,他的id就变成了6,而不是5。再重复一遍,id就有变成了7,请问这个怎么解决呢


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小脸 2022-11-12 10:28:07

同学你好,出现这种现象是正确的,因为id设置了自增,当删除id=5的数据时,再次新增就会从6开始,若解决这一问题,这里同学可以先取消id的自增按钮,将数字手动排序后,再次点击自增按钮,保存更改后,再次添加数据就可以顺序增加id值了

祝学习愉快~


  • 那删除数据的时候也是,比如把id=1的记录删除后,剩下的数据就是从2开始。那我每次删除,添加数据的时候都要在navicat里面操作自增按钮,岂不是很麻烦

    2022-11-12 10:36:41
  • 同学你好,基于简短的数据上述步骤就是可以的,如果是数据量较大的情况,可以通过命令实现id字段的重置

    #删除原有主键
    ALTER  TABLE news DROP id;
    #添加新主键字段:
    ALTER  TABLE  news ADD id MEDIUMINT(8) NOT NULL  FIRST;
    #设置新主键
    ALTER  TABLE news MODIFY COLUMN  id MEDIUMINT(8) NOT NULL  AUTO_INCREMENT,ADD PRIMARY  KEY(id);

    祝学习愉快~

    2022-11-12 11:37:09
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师