insertTableSQL = "INSERT INTO signup"+"(username,email,password,confirm) VALUES"+"(?,?,?,?)";
Смысл использования PreparedStatement заключается в том, что вы можете просто использовать простую строку с SQL, а затем заменить токены действительными параметрами.
В приведенном выше SQL-коде вы используете конкатенацию строк, котораяненужным.Просто используйте:
insertTableSQL = "INSERT INTO signup(username,email,password,confirm) VALUES(?,?,?,?)";
, что упрощает чтение и снижает вероятность ошибок при вводе при добавлении всех разделителей.
Однако я сомневаюсь, что это проблема.
Вместо этого я вижу:
String password1 = new String(passwordField.getPassword());
String password2 = new String(passwordField_1.getPassword());
Однако затем вы используете:
create.setString(3, password);
create.setString(4, password);
для замены токенов.Я бы предположил, что «пароль» является нулем?
Может быть, вы должны использовать «пароль1» и «пароль2»?
Редактировать:
У вас есть пара проблем.Взгляните на свой код:
Statement state = conn.createStatement();
String insertTableSQL = "INSERT INTO signup(username,email,password,confirm) VALUES(?,?,?,?)";
PreparedStatement create = conn.prepareStatement(insertTableSQL);
...
create.executeUpdate(insertTableSQL);
state.executeQuery(insertTableSQL);
- Вы создаете два оператора
- Вы пытаетесь выполнить команду SQL "вставка" в качестве запроса.
Решение состоит в том, чтобы:
- избавиться от Statement.
- избавиться от executeQuery.
Если вы хотите выполнить запроспосле вставки необходимо создать отдельный запрос SQL с помощью оператора «Выбрать».