gpt4 book ai didi

java - 数据没有被插入到我的 SQL 表中,但它还说存在重复的主键

转载 作者:行者123 更新时间:2023-11-29 09:48:11 24 4
gpt4 key购买 nike

所以我只是想将注册用户数据显示在 SQL 表中。我知道我已成功连接到数据库,但没有添加任何数据。我不知道这是为什么。当我运行代码时,我收到一个关于主键重复条目“用户名”的 SQLException。这是代码

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 方法不起作用。感谢您的宝贵时间!

编辑:从 statement.setString(1, "username"); 更改为 statement.setString(1, String.valueOf(username)); 等等。但现在出现数据截断错误。 数据截断:第 1 行“用户名”列的数据太长

最佳答案

您的错误是您在语句中插入了固定值,而不是您想要的值。

statement.setString(1, "username");
statement.setString(2, "password");
statement.setString(3, "name");
statement.setString(4, "email");

变量名称不应包含引号。例如:

statement.setString(1, username);
statement.setString(2, password);
statement.setString(3, name);
statement.setString(4, email);

关于java - 数据没有被插入到我的 SQL 表中,但它还说存在重复的主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55292401/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com