pstmt = conn.prepareStatement(queryBuilder.toString());
pstmt.setString(count++, commonDTO.getGroupName());
pstmt.setString(count++, commonDTO.getSubGrpNameHindi());
pstmt.setString(count++, commonDTO.getGroupCode());
pstmt.setInt(count++, commonDTO.getIsActive());
pstmt.executeUpdate();
StringBuilder queryBuilder = new StringBuilder();
queryBuilder = queryBuilder.append(SLCMQueryConstant.Get_SubGrp_Id);
pstmt.setString (1, commonDTO.getGroupName());
rs = pstmt.executeQuery();
int x = 0;
while(rs.next())
{
x= rs.getInt("subject_Group_ID");
}
queryBuilder= queryBuilder.append(SLCMQueryConstant.MapSubject_to_SubGrp);
pstmt.setInt(count++, x);
pstmt.setInt(count++, commonDTO.getSubGrpID());
pstmt.setInt(count++, commonDTO.getSubjectMaxMark());
pstmt.setInt(count++, commonDTO.getSubjectMinMark());
pstmt.executeUpdate();
conn.commit();
我正在尝试在第一张表中插入新行。然后我想要新添加的ID
行并插入第二张表,但有一个例外。
最佳答案
错误消息告诉您确切的问题-executeQuery用于执行SELECT查询,而不是INSERTS / UPDATES。改用executeUpdate
,例如描述here。
看到您已经在上面添加了查询-要执行多个查询,请运行多个executeQuery / executeUpdate语句。只要您没有设置自动提交并提交第三个查询,所有三个查询都将作为单个提交执行(即不能中断)。
不能使用单个executeQuery / executeUpdate(以分号分隔)运行多个查询。该语法只是许多客户端用于按文本分隔查询的语法,但是客户端也将分别发送多个请求的这些查询。
我猜想在单个事务中运行三个单独的查询正是您所需要的。但是,如果出于某种原因您绝对希望一次执行该操作,则可以使用stored procedure,您需要提前准备。