Итак, я просто пытаюсь, чтобы данные о зарегистрированных пользователях отображались в таблице SQL. Я знаю, что успешно подключился к базе данных, но никакие данные не добавляются. Я не уверен, почему это так. Когда я запускаю код, я получаю SQLException о повторяющейся записи 'username' для первичного ключа. вот код
public void createUser() throws SQLException{
String query = " INSERT INTO users(username, password, name, email)"
+ " VALUES(?, ?, ?, ?)";
PreparedStatement statement = db.getConn().prepareStatement(query);
statement.setString(1, String.valueOf(username));
statement.setString(2, String.valueOf(password));
statement.setString(3, String.valueOf(name));
statement.setString(4, String.valueOf(email));
statement.executeUpdate();
// error is here
statement.close();
db.getConn().commit();
System.out.println("success");
}
Я могу распечатать все имя пользователя / пароль / имя / адрес электронной почты без проблем. Ошибка выдается в строке statement.executeUpdate()
.
вот база данных, которая создается.
CREATE TABLE `users` (
`username` VARCHAR(45) NOT NULL,
`password` VARCHAR(45) NOT NULL,
`name` VARCHAR(45) NOT NULL,
`email` VARCHAR(45) NOT NULL,
PRIMARY KEY(`username`))
COMMENT = "this is a test table";
Я могу вставить данные в MySQLWorkbench без проблем, и я могу сделать DESCRIBE users
и посмотреть таблицу с пользователями, созданными вручную в рабочей среде, но я не уверен, почему метод java не работает. спасибо за ваше время!
edit: изменено с statement.setString(1, "username");
на statement.setString(1, String.valueOf(username));
и так далее. но теперь я получаю ошибку усечения данных. Data truncation: Data too long for column 'username' at row 1