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=
existing
username
然后将其提交到数据库,
else system.out.print(“用户名已被获取”);
然后返回。添加了一个指向API文档的链接。您要设置的参数是您要测试的用户名。实际上,您是在问DB是否已经知道新用户要使用的名称。我想我理解您所说内容的总体概念,但老实说,我不知道如何设置或设置什么参数在查询中哈哈。我假设一定有某种方式可以说
如果u newusername!=
existing
username
,然后将其提交到数据库,
else system.out.print(“用户名已被占用”)然后返回。添加到API文档的链接。要设置的参数是要测试的用户名。实际上,您是在询问数据库是否已经知道新用户想要使用的名称。