質問はそれを十分に要約していると思います。これが現時点での私のコードですが、必要な結果が得られません。そのバッチで作成された各行の生成された自動インクリメント ID を含む int 配列を返したいです。
CREATE_APPOINTMENT = database.prepareStatement("INSERT INTO " + TABLE_APPOINTMENTS + " VALUES (?, ?, ?, ?, ?)");
public static int[] createAppointment(Appointment... appointments) {
int[] ids = new int[appointments.length];
int count = 0;
try {
for (Appointment a : appointments) {
CREATE_APPOINTMENT.setDate(2, a.date);
CREATE_APPOINTMENT.setTime(3, a.time);
CREATE_APPOINTMENT.setInt(4, a.duration);
CREATE_APPOINTMENT.setString(5, a.clientName);
CREATE_APPOINTMENT.addBatch();
}
CREATE_APPOINTMENT.executeBatch();
ResultSet resultSet = CREATE_APPOINTMENT.getGeneratedKeys();
if (resultSet != null)
while (resultSet.next()) {
ids[count++] = resultSet.getInt(1);
}
} catch (SQLException ex) {
System.err.println(ex);
}
return ids;
}
8 つの予定を作成しようとしましたが、ID はデータベースに従って正常に作成されましたが、戻り値の配列には最後の ID のみが含まれ、残りはゼロです。どこに何か足りないのですか?