0

これは、ユーザーが任意の数の従業員を登録できるアプリケーションの小さな部分であり、従業員 ID は while ループを使用して生成されます....アプリケーションを閉じて、2 番目のラウンドで再びデータの入力を開始すると...の値従業員 ID empidはゼロにリセットされます。アプリケーションが実行されている限り、必要な O/P を取得できます。つまり、一意の ID がすべての従業員に割り当てられます。アプリケーションを起動するたびにempidの値を 0 から開始したくありません。代替品および/または変更が必要です。コードはここで提供されます

int empcount=0;
    public void actionPerformed(ActionEvent ae) {
            //---------------------If user wants to add data
            if(ae.getActionCommand()=="ADD EMPLOYEE") {
                System.out.println("ADDING");
        try{
            empcount=empcount+1;//----------------will assign employees with unique emp id
            //--------------------returns the text in name field to variables 
            String s_name=name.getText();
            int s_code=empcount;
            String s_dept=dept.getText();
            String s_ph=ph.getText();
            String s_bg=bg.getText();
            String s_add=add.getText();
            String s_date=date.getText();
            PreparedStatement st=null;
            Connection con = null;
            Class.forName("org.hsqldb.jdbcDriver");
            con = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/", "SA", "");
            st=con.prepareStatement("Insert into EmpReg (emp_name,emp_code,emp_ph,emp_bg,emp_add,emp_date,b_id) values(?,?,?,?,?,?,?)");
            //---------------------parameters and respective values, passed to the SQL statement
            st.setString(1,s_name);
            st.setInt(2,s_code);
            st.setString(3,s_ph);
            st.setString(4,s_bg);
            st.setString(5,s_add);
            st.setString(6,s_date);
            st.setString(7,s_dept);
            st.execute();
            JOptionPane.showMessageDialog(null,"Data is inserted into the database");
            JOptionPane.showMessageDialog(code, "employee code"+ empcount+"");
            con.close();
        }
            catch(Exception Ee){
            System.out.println(Ee);
            }
                }       
            }
        });
4

3 に答える 3

0

DBにautoIncrementTrueに設定されたフィールドを作成し、IDとしても使用してみませんか。このフィールドをEmployee-Numberとして使用することもできます。

詳細については、このリンクを確認してください:http ://www.w3schools.com/sql/sql_autoincrement.asp

生成された数は、新しい従業員を挿入するたびに増加します。

于 2012-10-04T12:38:48.840 に答える
0

Oracle、MySQL、PostGreなどのDBを使用し、シーケンスまたは自動生成されたID列を使用してそれを行うことができます

于 2012-10-04T12:39:20.470 に答える
0

これを行う標準のSQLの方法は、「自動インクリメント」主キー(emp_code)を使用することです。hsqldbについては、 IDENTITYを参照してください。SQL INSERTステートメントでは、主キーを省略します。これで、データベースは一意の新しいキーを生成します。実行後、 getGeneratedKeysを使用して、ステートメントから生成された主キーを取得できます。

これにより、2つの並列プロセスが主キーを台無しにしないことが保証されます。

于 2012-10-04T12:44:35.710 に答える