我正在一个员工项目中工作参与Java(使用NetBeans),我创建了两个表,一个用于员工的数据,另一个用于检查出勤率。
现在我想将第一个表的主键链接到第二个表,但我不知道如何。例如,如果您想检查出勤率,它将显示员工的ID以及何时(时间/时间)。
我尝试过:
这是第一张表:
CancellationToken
第二张表:
create table employee (
empID int primary key auto_increment,
fName varchar(100),
civilId int,
mobile int
);
并且在Java中我做到了但无法完成它:
create table employeeAttendance (
id int primary key auto_increment,
empID int not null,
timeIn time,
timeOut time,
daay date,
constraint emp_fk foreign key (empID) references employee (empID)
);
答案 0 :(得分:2)
你在功能方面几乎做了一切。
如果可以避免,请不要使用整数和日期的文本字段。每个主要UI框架都有这些特殊类型的字段,因此请使用它们!
但是,您应该使用PreparedStatement
的正确setter方法。如果您的列是int,则应使用ps.setInt
,如果您有时间/时间戳/日期列,则应使用ps.setDate
。
所以你的Java代码看起来像这样
SimpleDateFormatter sdf = new SimpleDateFormatter("dd.MM.yyyy");
java.util.Date jtimeIn = sdf.parse(timeLabel.getText());
java.sql.Date stimeOut = new java.sql.Date(jdate.getTime()); //This part is important, jdbc uses java.sql.Dates!
java.util.Date jdaay = sdf.parse(dateLabel.getText());
java.sql.Date sdaay = new java.sql.Date(jdaay.getTime()); //This part is important, jdbc uses java.sql.Dates!
String sql="insert into employeeAttendance(empID,timeIn,daay)values(?,?,?)";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1,Integer.parseInt(empIDAsText));
pstmt.setDate(2,stimeOut);
pstmt.setString(3,sdaay);