现有员工使用java mysql不会再出现问题

现有员工使用java mysql不会再出现问题,java,Java,我正在创建一个简单的员工休假工资系统。我在添加休假详细信息时遇到问题。休假详情重复。我正在为在公司工作的所有员工输入休假信息。当新员工加入时,我向他们输入休假信息。现有员工也再次添加。我显示下面的屏幕截图。发生了什么 离开桌子 登记表 当新员工仅加入时,仅添加新员工。不应再次添加现有员工。到目前为止我所尝试的,我附在下面 Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection("jd

我正在创建一个简单的员工休假工资系统。我在添加休假详细信息时遇到问题。休假详情重复。我正在为在公司工作的所有员工输入休假信息。当新员工加入时,我向他们输入休假信息。现有员工也再次添加。我显示下面的屏幕截图。发生了什么

离开桌子

登记表

当新员工仅加入时,仅添加新员工。不应再次添加现有员工。到目前为止我所尝试的,我附在下面

   Class.forName("com.mysql.jdbc.Driver");
        con = DriverManager.getConnection("jdbc:mysql://localhost/spay","root","");           
        con.setAutoCommit(true);
        stmt = con.createStatement();

       ResultSet rs = stmt.executeQuery("select empno from registation");

        while (rs.next()) {
          String empvalue = rs.getString("empno");
            pst = con.prepareStatement("insert into leaves(empno,casual,annual,medical,year)values(?,?,?,?,?)");
            pst.setString(1,empvalue); // employee no how to give 
            pst.setString(2, cas);
            pst.setString(3, anu);
            pst.setString(4, med);
            pst.setString(5, year);         
            pst.executeUpdate();


        }
            JOptionPane.showMessageDialog(null,"Leave Insertedddddd");
我试过的代码附在下面

   Class.forName("com.mysql.jdbc.Driver");
        con = DriverManager.getConnection("jdbc:mysql://localhost/spay","root","");           
        con.setAutoCommit(true);
        stmt = con.createStatement();

       ResultSet rs = stmt.executeQuery("select empno from registation");

        while (rs.next()) {
          String empvalue = rs.getString("empno");
            pst = con.prepareStatement("insert into leaves(empno,casual,annual,medical,year)values(?,?,?,?,?)");
            pst.setString(1,empvalue); // employee no how to give 
            pst.setString(2, cas);
            pst.setString(3, anu);
            pst.setString(4, med);
            pst.setString(5, year);         
            pst.executeUpdate();


        }
            JOptionPane.showMessageDialog(null,"Leave Insertedddddd");
执行此操作时,从注册表中选择empno,它将从注册表中选择所有empno。。。结果集将包含其中的所有用户

所以当你这么做的时候

while (rs.next()) { //rs now has all the employee
      String empvalue = rs.getString("empno");
        pst = con.prepareStatement("insert into leaves(empno,casual,annual,medical,year)values(?,?,?,?,?)");
        pst.setString(1,empvalue); // employee no how to give 
        pst.setString(2, cas);
        pst.setString(3, anu);
        pst.setString(4, med);
        pst.setString(5, year);         
        pst.executeUpdate();
    }
它再次添加所有员工

您可以做的是,在select empno from注册表中放置一个条件语句

例如,仅选择一个empno为“001”的用户:

SELECT empno FROM registation WHERE empno = '001';
要选择多个员工,您可以使用“执行以下类似操作…”

SELECT empno FROM registation WHERE empno = '001' OR empno = '002' OR empno = '003'; 
为此,您可以根据需要在后面附加任意多个或empno='00X'

要选择表中的最后一项,请执行以下操作:

SELECT empno FROM registation ORDER BY id DESC LIMIT 1;

A请避免屏幕截图。相反,试着用格式很好的文本表达你想表达的意思。。。我完全不知道你要什么。你期望这里的人能如何帮助你?你从注册处得到了所有的帮助。while循环将为注册中的每一行的叶子插入一个新行。我认为您必须为该查询添加一些条件。类似于从注册中选择empno,名称类似于?你能写下来吗先生如何添加条件先生我试过这段代码,但如果有新的3名员工添加,则只添加最后一个插入rcord这是个问题。按id DESC LIMIT 1显示上次从注册顺序中选择的empno;