我出的这个错误我百度了半天,发现都是一样的答案,对我没什么用。所以在这记录一下我的这个错误原因和解决的办法。
我的程序:
pstmt1=conn.prepareStatement(sql1);
pstmt2=conn.prepareStatement(sql2);
//插入topic表
pstmt1.setInt(1, topic.getTopicID());
pstmt1.setString(2, topic.getTopicContent());
pstmt1.setString(3, topic.getTopicAnswer());
pstmt1.setInt(4, topic.getTopicFraction());
pstmt1.setString(5, topic.getTopicType());
//插入topicOption表
if(("单选题").equals(topic.getTopicType())||("多选题").equals(topic.getTopicType())) {
pstmt2.setInt(1,topic.getTopicID());
pstmt2.setString(2,topic.getTopicOptionContent().getOption()[0]);
pstmt2.setString(3,topic.getTopicOptionContent().getContent()[0]);
pstmt2.setString(4,topic.getTopicOptionContent().getOption()[1]);
pstmt2.setString(5,topic.getTopicOptionContent().getContent()[1]);
pstmt2.setString(6,topic.getTopicOptionContent().getOption()[2]);
pstmt2.setString(7,topic.getTopicOptionContent().getContent()[2]);
pstmt2.setString(8,topic.getTopicOptionContent().getOption()[3]);
pstmt2.setString(9,topic.getTopicOptionContent().getContent()[3]);
j=pstmt2.executeUpdate();
}
i=pstmt1.executeUpdate();
这是把一串数据写到两个表中,子表中有一个外键,这意味着在你插入主表的数据之前,你是不可以向子表中插入主表不存在的字段。而我在执行
j=pstmt2.executeUpdate();//insert子表
之后执行
i=pstmt1.executeUpdate();//insert主表
这必然会报错,因为现在主表中还没有数据。
把这两个语句调换一下位置,错误即可避免。