Привет я продолжаю получать эту ошибку в моей базе данных java
private void storeBttnActionPerformed(java.awt.event.ActionEvent evt) { try { System.out.println(passIdTextField.getText()); int s1 =Integer.parseInt(passIdTextField.getText().trim()); String s2 = nameTextField.getText(); String s3 = malejCheckBox1.getText(); String s4 = femalejCheckBox2.getText(); int s5 = Integer.parseInt(phoneNumTextField.getText().trim()); String s6 = emailTextField.getText(); String s7 =address1TextField.getText(); String s8 = address2TextField.getText(); String s9 = cityTextField.getText(); String s10 =countyTextField.getText(); String s11 = fromComboBox.getSelectedItem().toString(); String s12 = toComboBox.getSelectedItem().toString(); String s13 = departTextField.getText(); String s14= arrivalTextField.getText(); int s15 = Integer.parseInt(adultTextField.getText().trim()); int s16 = Integer.parseInt(childrenTextField.getText().trim()); String s17 = classTextField.getText(); int s18 = Integer.parseInt(seatsTextField.getText().trim()); int s19 = Integer.parseInt(priceTextField.getText().trim()); int s20 = Integer.parseInt(lengthStayjTextField1.getText().trim()); int s21 = Integer.parseInt(cardNumTextField.getText().trim()); int s22 = Integer.parseInt(securityTextField.getText().trim()); int s23 = Integer.parseInt(ExpDatejTextField1.getText().trim()); ///fix this here in order System.out.println(s1+ s2 +s3 +s4 +s5 +s6 +s7 +s8 +s9 +s10 +s11 +s12 +s13 +s14 +s15 +s16 +s17+s18+s19+s20+s21+s22+s23); String newAir = "INSERT INTO Ticket(PassengerId, Name,Gender, Number, Email, Address1, Address2, City, County, From, To, DepartDate, ArrivalDate,Adult,Children,Class, Seats, Price, LengthStay,CardNumber,SecurityCode, ExpDate )VALUES('"+s1+"', '"+s2+"','"+s3+"','"+s4+"', '"+s5+"','"+s6+"','" + ""+s7+"', '"+s8+"','"+s9+"','"+s10+"', '"+s11+"','"+s12+"','" + ""+s13+"', '"+s14+"','"+s15+"','"+s16+"', '"+s17+"','"+s18+"','"+s19+"','"+s20+"','"+s21+"','"+s22+"','"+s23+"')"; stmt.executeUpdate(newAir); System.out.println(newAir); System.out.println(s1 + " stored in database"); } catch(SQLException e) {System.out.println("Error in creating new row in database"); count++; e.printStackTrace();} // TODO add your handling code here: }
Что я уже пробовал:
я пытался инициализировать все это как строку и целые числа, но это продолжает давать мне эту ошибку
ucanaccess.jdbc.UcanaccessSQLException: несоответствие количества столбцов строк
в Net.ucanaccess.с JDBC.UcanaccessStatement.executeUpdate(UcanaccessStatement. java:211)
когда я нажимаю кнопку store я не понимаю она работает но затем падает когда я нажимаю store и я дважды проверил все ли правильно написано в моей базе данных
Richard MacCutchan
Почему вы используете строки для гендерного поля? Используйте значение bool (или int, чтобы учесть современную тенденцию множества полов). Кроме того, у вас есть одно поле базы данных для пола, но вы пытаетесь вставить s3 и s4. У вас также нет проверок на наличие недопустимых символов в числовых полях, так что это может привести к сбою вашего кода. И, наконец, использование конкатенированных строк для команд базы данных оставляет вашу базу данных открытой для SQL-инъекции и потери всех ваших данных.