2016-10-29 4 views
0

Это сбило меня с ума, и я уверен, что это что-то простое. Я получаю сообщение «значения должны содержать хотя бы один элемент» от сервера, когда я пытаюсь ввести резервирование из таблицы, которая появляется. Все работает нормально. Независимо от того, использую ли я кавычки в разделе VALUES или плюс (+) символы или кавычки над разделительными запятыми, я получаю разные сообщения об ошибках. Когда я помещаю кавычки через table_num, я получаю сообщение об ошибке, говоря, что вы не можете вставить CHAR в INTEGER. Когда я удаляю кавычки, я получаю сообщение об ошибке - Severe: java.sql.SQLSyntaxErrorException: Столбец «TABLE_NUM» либо не находится ни в одной таблице в списке FROM, либо появляется в спецификации соединения и т. Д. Может ли кто-нибудь сказать мне, что происходит? Вот код jsp. Заранее спасибо.Вставка резервирования в базу данных

 <%  
      int tableNum = 0; 
      String firstName = null; 
      String lastName = null; 
      String Address = null; 
      int Phone = 0; 
      java.sql.Date date = null; 
      int People = 0; 

      if (request.getParameter("table_num")!=null){ 
       tableNum = Integer.parseInt(request.getParameter("table_num")); 
      } 
      if (request.getParameter("first")!=null){ 
       firstName = request.getParameter("first"); 
      } 
      if (request.getParameter("last")!=null){ 
       lastName = request.getParameter("last"); 
      } 
      if (request.getParameter("address")!=null){ 
       Address = request.getParameter("address"); 
      } 
      if (request.getParameter("phone")!=null){ 
       Phone = Integer.parseInt(request.getParameter("phone")); 
      } 
      if (request.getParameter("date")!=null){ 
       java.util.Date utilDate = new java.util.Date(request.getParameter("date")); 
       date = new java.sql.Date(utilDate.getTime()); 
      } 
      if (request.getParameter("people")!=null){ 
       People = Integer.parseInt(request.getParameter("people")); 
      } 
      if(tableNum != 0 && firstName != null && lastName != null && Address != null && Phone != 0 && date != null && People != 0){ 
       String URL = "jdbc:derby://localhost:1527/Reservations"; 
       String USERNAME= "johnpaul"; 
       String PASSWORD= "purlease"; 
       Connection myCon = null; 
       Statement ste = null; 
       PreparedStatement preparedStmt = null; 

       try{ 
        Class.forName("org.apache.derby.jdbc.ClientDriver"); 
        System.out.println("Connecting to DB..."); 
        Connection con=DriverManager.getConnection("jdbc:derby://localhost:1527/Reservations","johnpaul", "purlease"); 
        System.out.println("Connected successfuly"); 

        System.out.println("Inserting records into table");  
        Statement st = con.createStatement(); 
        String query = "INSERT INTO JOHNPAUL.CUSTOMER_RESERVATIONS(TABLE_NUM,FIRST_NAME,LAST_NAME,ADDRESS,TELEPHONE,DATE,NUMBER_IN_PARTY)VALUES(table_num,first,last,address,phone,date,people)"; 


        st.executeUpdate (query); 
        System.out.println("Records inserted"); 


        }catch(SQLException se){ 
        se.printStackTrace(); 
       }catch(ClassNotFoundException se){ 
      //Handle errors for JDBC 
        se.printStackTrace(); 
      }catch(Exception e){ 
       //Handle errors for Class.forName 
        e.printStackTrace(); 

      } 
      }    
     %> 

ответ

0

Ваша проблема, как представляется, здесь:

String query = "INSERT INTO JOHNPAUL.CUSTOMER_RESERVATIONS 
    (TABLE_NUM, FIRST_NAME,LAST_NAME,ADDRESS,TELEPHONE, DATE, NUMBER_IN_PARTY) 
    VALUES (table_num, first,last,address,phone,date,people)"; 

Две вещи здесь: 1. Побег ваши строки; и 2. Совместите значения переменных в строке.

String query = "INSERT INTO JOHNPAUL.CUSTOMER_RESERVATIONS 
     (TABLE_NUM, FIRST_NAME,LAST_NAME,ADDRESS,TELEPHONE, DATE, NUMBER_IN_PARTY) 
     VALUES (" + table_num + ", '" + first + "', '" + last + "', '" + address + "', " + phone + " , '" + date + "', " + people + ");"; 

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

+0

Спасибо Ли. Я его отсортировал. Сейчас проблема с датой. Все работает хорошо, когда я удаляю весь ref на сегодняшний день в jsp-коде, и записи вставляются в DB. Bur получает сообщение об ошибке, сообщающее мне: «Столбцы типа« DATE »не могут хранить значения типа« INTEGER »при оставлении всего кода даты. –

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