【问题标题】:Set Auto-Increment into previous value JAVA PreparedStatement MYSQL将自动增量设置为以前的值 JAVA PreparedStatement MYSQL
【发布时间】:2011-06-06 23:36:28
【问题描述】:

我有 3 个按钮(添加、保存、取消)。如果我按下添加按钮,它会自动生成一个自动递增的值并显示在文本字段中。如果我按下保存按钮,它会更新记录。我的问题是当我按下取消按钮时,我希望能够删除当前添加的数据并将自动增量键设置为已删除数据的主键。可以这样做吗?

dc.connect();
          try {
          PreparedStatement st=dc.getConnection().prepareStatement("Delete from Employeemaster where empno = '" + empno.getText() + "'");
          i=st.executeUpdate();
          if (i>0) {
            dc.getConnection().commit();


        }
    } catch (Exception e) {
        JOptionPane msg=new JOptionPane();
        msg.showMessageDialog(this,"Database Error: "+e.getMessage());
    }

    dc.disconnect();
    dc.connect();
          try {
          PreparedStatement st=dc.getConnection().prepareStatement("ALTER TABLE employeemaster AUTO_INCREMENT ='" + empno.getText() + "'");
          i=st.executeUpdate();
          if (i>0) {
            dc.getConnection().commit();


        }
    } catch (Exception e) {
        JOptionPane msg=new JOptionPane();
        msg.showMessageDialog(this,"Database Error: "+e.getMessage());
    }

我尝试替换

ALTER TABLE employeemaster AUTO_INCREMENT ='" + empno.getText() + "'" 

进入

ALTER TABLE employeemaster AUTO_INCREMENT = 10003; 

它奏效了。是否可以将自动递增的值设置为文本字段中包含/输入的值?

附加信息: 我得到的错误是

“您的 SQL 语法有错误;请查看与您的 MYSQL 服务器版本相对应的手册,以在第 1 行的“10003”附近使用正确的语法。”

【问题讨论】:

    标签: java mysql prepared-statement auto-increment


    【解决方案1】:

    单引号的使用会导致mysql将auto_increment值(整数)转换成字符串,这是不可取的

    去掉单引号,比如

    "ALTER TABLE employeemaster AUTO_INCREMENT=" + empno.getText()
    

    或者

    empno.getText() 转换为整数

    【讨论】:

      猜你喜欢
      • 2012-11-30
      • 2017-09-16
      • 2011-11-25
      • 2013-05-21
      • 1970-01-01
      • 2011-12-18
      • 2011-03-06
      • 2016-03-13
      • 1970-01-01
      相关资源
      最近更新 更多