단일 쿼리로 2 개의 테이블에 데이터를 삽입하고 싶습니다. 오류가 발생합니다.mysql 테이블에 데이터를 삽입하려고합니다.
mycode는 아래에 표시됩니다.
public class Trains extends HttpServlet {
public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException {
response.setContentType("text/html");
PrintWriter out=response.getWriter();
int tid=Integer.parseInt(request.getParameter("tid"));
String tname=request.getParameter("tname");
String ttype=request.getParameter("ttype");
String stncode=request.getParameter("stn_code");
String stnname=request.getParameter("stn_name");
String availtime=request.getParameter("Avail_time");
String depttime=request.getParameter("Dep_time");
String halttime=request.getParameter("Halt_time");
String dist=request.getParameter("distance");
String[] avail_day=request.getParameterValues("week");
try {
String query="INSERT INTO Train_info(Train_ID,Train_Name,Train_Type,Runs_On) values(?,?,?,?); INSERT INTO Train_route(stn_code,stn_name,arrival_time,Destn_time,Halt_time,Distance) values(?,?,?,?,?,?)";
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/Railway","root","mysql123");
PreparedStatement ps=con.prepareStatement(query);
ps.setInt(1, tid);
ps.setString(2, tname);
ps.setString(3, ttype);
ps.setString(4, stncode);
ps.setString(5, stnname);
ps.setString(6, availtime);
ps.setString(7, depttime);
ps.setString(8, halttime);
ps.setString(9, dist);
for(int i=0;i<avail_day.length;i++){
ps.setString(10, avail_day[i]);
}
int i=ps.executeUpdate();
if(i>0){
out.println("Successfully Registration");
response.sendRedirect("TrainRoute.jsp");
}
else{
out.println("Registration failed");
response.sendRedirect("Error.java");
}
}
catch(ClassNotFoundException ce){
ce.printStackTrace();
}
catch(Exception e){
out.println(e);
}
}
}
오류는 다음과 같습니다 -
은 java.sql.SQLException : 당신은 당신의 SQL 구문에 오류가 있습니다; 근처 사용할 수있는 권리 구문에 대한 MySQL 서버 버전에 해당하는 설명서를 확인 라인 1
한번에 두 개의 테이블에 삽입 할 수 없습니다 –
'ps.setString (10, avail_day [i]);'... 이것은 10 번째 매개 변수에 다른 값을 계속 할당하는 것은 의미가 없습니다. –
두 개의 삽입 하나의 트랜잭션에서는 있지만 단일 쿼리에서는 그렇지 않습니다. –