2012-03-16 111 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,則表示數據庫不包含類似的記錄。