2012-03-16 81 views
0

因此,我在这里要做的是检查我的users mySQL数据库中的user表中是否有username行中的重复条目,然后插入新的username.以下是我的代码示例。目前,结果ResultSet没有做任何事情,我也不确定如何将它实现到后面的IF语句中。是的,我有try的渔获量,只是没有在这个例子中。对不起,如果这是一个相当简单的问题,我上周刚开始用Java编程。此外,这是我在这里的第一个问题,我非常感谢帮助。如何避免在我的MySQL数据库中输入重复的条目?

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!"); 
     } 
    } 
+0

请仔细阅读[主要关键概念](http://www.w3schools.com/sql/sql_primarykey.asp) – 2012-03-16 18:07:08

+0

@ringbearer谢谢,这非常有用。 – The31StReaper 2012-03-16 18:37:00

回答

2

所以我想你想做什么 - 我应该这样做,是如果用户名在表中,然后添加或不。所以SQL需要是这样的:

从用户名中选择用户名username =?

然后在查询中设置参数。在此处查看文档: http://docs.oracle.com/javase/6/docs/api/java/sql/PreparedStatement.html

然后,您需要检查查询后结果集中的内容,并查看是否有任何内容。 API文档将与PreparedStatement文档大致相同。

在db中添加一个约束也会给你带和大括号。

希望这有助于

+0

我想我理解你所说的整体概念,但是,老实说,我并不真正在查询中设置怎样或什么参数。我假设必须有某种方式来说'如果_newusername_!='现有'username'然后将其提交给数据库,'else system.out.print(“用户名已被占用);'然后循环返回。 – The31StReaper 2012-03-16 18:32:33

+0

添加了一个指向API文档的链接,你要设置的参数是你想测试的用户名,实际上你问DB是否已经知道新用户想要使用的名字。 – 2012-03-17 18:24:22

1

您是否在表格中创建了主键?主键自动防止重复值。

如果要防止重复的用户名,请将您的username列作为主键。

+0

问题在于,据我所知(我是新来的)只能有一个自动增量,它必须是主键。我想idUser不断增加每个新的输入'username.'虽然,我想也许idUser列是不必要的。 – The31StReaper 2012-03-16 18:30:44

2

当你定义你的SQL表,你可以定义一些项目是唯一的。

所以在你的例子,如果你想要的用户名是唯一的,你可以这样:

UNIQUE(username) 

你的表声明。

如果你想对用户名/电子邮件是唯一的,你可以这样:

UNIQUE(username, email) 

的文档here

1

嗯,我不是一个Java的家伙。但这可能对你有帮助。

您可以在查询执行后检索第​​一个结果集的行数。如果行数等于0,则表示数据库不包含类似的记录。