这是应用程序的一小部分,用户可以通过使用while循环来注册任意数量的员工和员工ID ....当我关闭应用程序&在第二轮开始再次填充数据...员工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);
}
}
}
});
答案 0 :(得分:0)
为什么不在数据库中创建一个字段,该字段设置为autoIncrementTrue,也可以将其用作ID。您也可以将此字段用作Employee-Number。
您可以查看此链接以获取更多信息:http://www.w3schools.com/sql/sql_autoincrement.asp
每次插入新员工时,生成的数字都会递增。
答案 1 :(得分:0)
您可以使用Oracle,MySQL,PostGre等数据库,并使用序列或自动生成的ID列为您执行此操作
答案 2 :(得分:0)
执行此操作的标准SQL方法是使用“自动增量”主键(emp_code),hsqldb查看IDENTITY。 在SQL INSERT语句中省略主键。现在数据库生成一个唯一的新密钥。 执行后,您可以使用getGeneratedKeys从语句中检索生成的主键。
这可确保两个并行进程不会弄乱主键。