将Auto-Increment设置为之前的值JAVA PreparedStatement MYSQL

时间:2011-01-11 06:06:10

标签: java mysql prepared-statement auto-increment

我有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“附近使用正确的语法。”

1 个答案:

答案 0 :(得分:1)

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

删除单引号,例如

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

empno.getText()转换为整数