Java 如何避免在MySQL数据库中输入重复条目?
因此,我在这里要做的是在插入新的Java 如何避免在MySQL数据库中输入重复条目?,java,mysql,jdbc,Java,Mysql,Jdbc,因此,我在这里要做的是在插入新的用户名之前,检查我的用户mySQL数据库中的用户表中的用户名行中是否存在重复条目。下面是我的代码示例。目前,ResultSet没有做任何事情,我也不确定如何将它实现到后面的IF语句中。是的,我有try的捕获,只是在本例中没有。抱歉,如果这是一个相当简单的问题,我上周才开始用Java编程。另外,这是我在这里的第一个问题,我非常感谢你的帮助 try{ String sequel = ("SELECT username FROM `users`.`us
用户名之前,检查我的用户
mySQL数据库中的用户
表中的用户名
行中是否存在重复条目。
下面是我的代码示例。目前,ResultSet没有做任何事情,我也不确定如何将它实现到后面的IF语句中。是的,我有try
的捕获,只是在本例中没有。抱歉,如果这是一个相当简单的问题,我上周才开始用Java编程。另外,这是我在这里的第一个问题,我非常感谢你的帮助
try{
String sequel = ("SELECT username FROM `users`.`user`");
PreparedStatement userNameInfo = conn.prepareStatement(sequel);
userNameInfo.executeQuery(sequel);
ResultSet results = userNameInfo.getResultSet();
if (sequel.equals("")) {
conn.setAutoCommit(false);
String sql = "INSERT INTO `users`.`user`(`username`,`password`,`email`) VALUES('" + newusername +"', '" + newpassword + "', '" + newemail +"')";
PreparedStatement prest = conn.prepareStatement(sql);
prest.executeUpdate(sql);
conn.commit();
conn.close();
System.out.println("Added Successfully!");
}
else {
System.out.println("Add failed!");
}
}
是否已在表中创建主键?主键自动防止重复值
如果要防止重复用户名,请将您的
username
列设为主键。是否已在表中创建主键?主键自动防止重复值
如果要防止重复用户名,请将您的
username
列设为主键。因此,我认为您要做的是——并且应该做的是,选择用户名是否在表中,然后添加或不添加。因此,sql需要如下所示:
从username=
然后在查询中设置参数。请参见此处的文档:
然后,您需要在查询之后检查resultset中的内容,并查看其中是否有任何内容。此API文档将与PreparedStatement文档位于大致相同的位置
在db中添加约束还将为您提供皮带和支架
希望这对您有所帮助,所以我认为您要做的是——我认为您应该做的是,选择用户名是否在表中,然后添加或不添加。因此,sql需要如下所示: 从username= 然后在查询中设置参数。请参见此处的文档: 然后,您需要在查询之后检查resultset中的内容,并查看其中是否有任何内容。此API文档将与PreparedStatement文档位于大致相同的位置 在db中添加约束还将为您提供皮带和支架
希望这有助于在定义SQL表时,可以将某些项定义为唯一项 因此,在您的示例中,如果希望用户名是唯一的,您可以添加:
UNIQUE(username)
UNIQUE(username, email)
到您的表声明
如果您希望用户名/电子邮件对是唯一的,您可以添加:
UNIQUE(username)
UNIQUE(username, email)
文档是定义SQL表时,可以将某些项定义为唯一项 因此,在您的示例中,如果希望用户名是唯一的,您可以添加:
UNIQUE(username)
UNIQUE(username, email)
到您的表声明
如果您希望用户名/电子邮件对是唯一的,您可以添加:
UNIQUE(username)
UNIQUE(username, email)
文档是嗯,我不是一个java人。但这可能对你有帮助
执行查询后,可以检索第一个结果集的行数。如果行数等于0,则表示数据库中不包含类似的记录。嗯,我不是java爱好者。但这可能对你有帮助
执行查询后,可以检索第一个结果集的行数。如果行数等于0,则表示数据库不包含类似的记录。请阅读@ringbearer Thank you,这非常有用。请阅读@ringbearer Thank you,这非常有用。据我所知,这方面的问题是(我是新手)只能有一个自动增量,它必须是主键。我希望idUser随着
用户名的每次新输入而不断递增。
不过,我认为idUser列可能是不必要的。问题是,据我所知(我是新手),只能有一个自动递增,它必须是主键。我希望idUser随着用户名的每个新输入不断增加。
不过,我想也许idUser列是不必要的。我想我理解你所说的全部概念,但是,老实说,我真的不知道如何或在查询中设置什么参数哈哈。我想一定有某种方式可以说if\u newusername\u=
existingusername
然后将其提交到数据库,else system.out.print(“用户名已被获取”);
然后返回。添加了一个指向API文档的链接。您要设置的参数是您要测试的用户名。实际上,您是在问DB是否已经知道新用户要使用的名称。我想我理解您所说内容的总体概念,但老实说,我不知道如何设置或设置什么参数在查询中哈哈。我假设一定有某种方式可以说如果u newusername!=
existingusername
,然后将其提交到数据库,else system.out.print(“用户名已被占用”)代码>然后返回。添加到API文档的链接。要设置的参数是要测试的用户名。实际上,您是在询问数据库是否已经知道新用户想要使用的名称。