2016-11-12 6 views
0

Я хочу вставить данные в 2 таблицы с одним запросом. bt дает ошибкуЯ пытаюсь вставить данные в таблицу 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 для правильного синтаксиса, чтобы использовать рядом с 'INSERT INTO Train_route (stn_code, stn_name, arrival_time, Destn_time, Halt_time, Dist' в строке 1

+0

Вы не можете вставлять сразу в две таблицы –

+0

'ps.setString (10, avail_day [i]);' ... это не имеет смысла продолжать вводить другое значение в десятый параметр –

+1

Вы _can_ делаете две вставки в одной транзакции, но не в одном запросе. –

ответ

1

Смотреть это: Java - Mysql - Multiple query

сообщение об ошибке INSERT INTO вашего синтаксиса взывает второй вставки в вашей query строки. драйвер JDBC для MySQL, как и большинство драйверов MySQL, принимает только один запрос за звонок в Connection.preparedStatement() вызова.

Вам нужно реорганизовать код для использования двух p обновленные операторы, один раз для каждой таблицы.

Если вы привыкли работать с другими марками и таблицами SQL-серверов, это ограничение может вас пошевелить.

Смежные вопросы