java - 如何使用带有外键的PreparedStatement

标签 java jdbc

我正在使用Java(使用NetBeans)进行员工考勤项目,我创建了两个表,一个用于员工数据,另一个用于检查考勤。

现在我想将第一个表的主键链接到第二个表,但我不知道如何。例如,如果您想检查出勤情况,它将显示员工的 ID 和时间(上类/超时)。

我尝试过的:

这是第一个表:

create table employee (
    empID int primary key auto_increment,
    fName varchar(100),
    civilId int,
    mobile int
);

第二个表:

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)
);

在 Java 中我做到了这一点,但无法完成它:

String sql="insert into employeeAttendance(empID,timeIn,daay)values(?,?,?)";
pstmt = conn.prepareStatement(sql);

pstmt.setString(1,.getText());
pstmt.setString(2,timeLabel.getText());
pstmt.setString(3,dateLabel.getText());

最佳答案

就功能而言,您几乎做对了所有事情。

如果可以避免,请不要使用整数和日期的文本字段。每个主要的 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);

关于java - 如何使用带有外键的PreparedStatement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50096701/

相关文章:

grails - 自添加数据库连接以来,Grails运行应用程序时出错

java - 扫描多个maven pom以获取不同的依赖版本

java - 骡子:Foreach 在 Jackson ArrayNode 对象上循环

java - 使用 Java 的 Auth0 JWT

Java,从链表参数返回链表

java - 何时在 Websphere Commerce 中使用访问 bean 或数据 bean?

java - MySql Jdbc 连接器 - 本地化问题

java - JAVA中谓词实现查询FilrredRowSet

mysql - 无法在 osx 上获取 mysql 的数据库元数据

java - 在中型 Web 应用程序中处理数据库连接的正确方法