Как я могу избежать ввода повторяющихся записей в моей базе данных MySQL? - PullRequest
0 голосов
/ 16 марта 2012

Итак, что я пытаюсь сделать, это проверить таблицу user в моей базе данных users mySQL на наличие дубликатов в строке username, прежде чем вставлять новую username. , В настоящее время результаты 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!");
      }
  }

Ответы [ 4 ]

2 голосов
/ 16 марта 2012

Так что я думаю, что вы пытаетесь сделать - и я должен сделать, это выбрать, если имя пользователя в таблице, а затем добавить или нет.Таким образом, sql должен выглядеть следующим образом:

выбрать имя пользователя из списка пользователей, где username =?

, а затем задать параметр в запросе.См. Документы здесь: http://docs.oracle.com/javase/6/docs/api/java/sql/PreparedStatement.html

Затем вам необходимо проверить, что находится в наборе результатов после запроса, и посмотреть, есть ли что-нибудь там.Документы API для этого будут примерно в том же месте, что и документы PreparedStatement.

Добавление ограничения в базу данных также даст вам пояс и фигурные скобки.

Надеюсь, это поможет

2 голосов
/ 16 марта 2012

Когда вы определяете свою таблицу SQL, вы можете определить некоторые элементы как уникальные.

Итак, в вашем примере, если вы хотите, чтобы имена пользователей были уникальными, вы добавили бы:

UNIQUE(username)

к объявлению вашей таблицы.

Если вы хотите, чтобы имя пользователя и адрес электронной почты были уникальными, добавьте:

UNIQUE(username, email)

Документация здесь

1 голос
/ 16 марта 2012

Хмм, я не ява, парень.Но это может вам помочь.

Вы можете получить количество строк первого результирующего набора после выполнения запроса.Если количество строк равно 0, это означает, что база данных не содержит аналогичной записи.

1 голос
/ 16 марта 2012

Вы создали первичный ключ в таблице? Первичный ключ автоматически предотвращает дублирование значений.

Если вы хотите предотвратить дублирование имен пользователей, сделайте столбец username первичным ключом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...