【发布时间】:2015-04-20 14:53:15
【问题描述】:
当我试图通过 jdbc 将值插入下表时,我收到错误
数据库架构
CREATE TABLE student_contact_details_t(
student_contact_details_id MEDIUMINT NOT NULL AUTO_INCREMENT,
student_id MEDIUMINT NOT NULL ,
contact_relation_type_id MEDIUMINT NOT NULL,
name varchar(255),
addresss varchar(255),
phone_no varchar(255),
created_by varchar(255),
created_date DATE,
modified_by varchar(255),
modified_date DATE,
PRIMARY KEY(student_contact_details_id),
FOREIGN KEY(student_id) REFERENCES student_details_t(student_id),
FOREIGN KEY(contact_relation_type_id) REFERENCES contact_relation_type_t(contact_relation_type_id)
);
代码
public void saveStudentContactDetails(
StudentContactDetailsTO studentContactDetails)
throws ClassNotFoundException, SQLException, IOException {
try {
int autoId = 0;
String Insertquery = "insert into student_contact_details_t(student_id,contact_relation_type_id,name,addresss,phone_no,created_by,created_date,modified_by,modified_date)values(?,?,?,?,?,?,?,?,?)";
PreparedStatement prepareStatement = JDBCConnectionUtil
.getConnection().prepareStatement(Insertquery,
Statement.RETURN_GENERATED_KEYS);
ResultSet studentId = prepareStatement.getGeneratedKeys();
prepareStatement.setInt(1, studentContactDetails.getStudentId());
// prepareStatement.setInt(2,studentId.getInt(1));
prepareStatement.setInt(2, autoId);
prepareStatement.setString(3, studentContactDetails.getName());
prepareStatement.setString(4, studentContactDetails.getAddress());
prepareStatement.setString(5, studentContactDetails.getPhoneNo());
prepareStatement.setString(6, "sysadmin");
prepareStatement.setString(7, DateUtil.getDate().format(date));
prepareStatement.setString(8, "sysadmin");
prepareStatement.setString(9, DateUtil.getDate().format(date));
prepareStatement.executeUpdate();
while (studentId.next()) {
autoId = studentId.getInt(1);
System.out.println(autoId);
}
} catch (ClassNotFoundException | SQLException | IOException e) {
throw e;
}
}
异常
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (`studentregistration`.`student_contact_details_t`, CONSTRAINT `student_contact_details_t_ibfk_1` FOREIGN KEY (`student_id`) REFERENCES `student_details_t` (`student_id`))
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:377)
at com.mysql.jdbc.Util.getInstance(Util.java:360)
【问题讨论】:
-
我很困惑。您的标题说您在加载数据库配置时遇到错误,但异常说您遇到约束违规,这意味着您已连接到数据库正常。是哪个?
-
我正在连接我的数据库。同时尝试使用结果集生成的键来获取父表主键并将数据插入到子表中。我遇到了这个异常。