Как использовать PreparedStatement с внешним ключом - PullRequest
0 голосов
/ 30 апреля 2018

Я работаю в проекте сотрудников Посещаемость на Java (с использованием NetBeans), я создал две таблицы, одну для данных сотрудника, а другую для проверки посещаемости.

Теперь я хочу связать первичный ключ первой таблицы со второй таблицей, но не знаю как. Например, если вы хотите проверить посещаемость, он покажет вам идентификатор сотрудника и время (время / время ожидания).

Что я пробовал:

Это первая таблица:

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

1 Ответ

0 голосов
/ 30 апреля 2018

Вы сделали почти все правильно с точки зрения функциональности.

Пожалуйста, не используйте текстовые поля для целых чисел и даты, если вы можете избежать этого. У каждого основного UI Framework есть поля для этих специальных типов, так что используйте их!

Однако вы должны использовать правильный метод установки PreparedStatement. Если ваш столбец имеет тип 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...