2011-11-28 57 views
2

我是新來的mysql和m試圖從eclipse中的mysql表中選擇N行。現在,我想從數據庫中選擇N行相同的值。我使用下面的代碼從mysql數據庫的N行中選擇相同的值

User user= null; 
    ArrayList<User> searchedUsers = new ArrayList<User>(); 
    PreparedStatement stmt = null; 
    ResultSet rs = null; 
    try { 
      String authenticationSql; 
      authenticationSql = "SELECT * FROM users WHERE " + searchIn + " = ?"; 

      log.info(authenticationSql); 
      stmt = (PreparedStatement) dbConn.prepareStatement(authenticationSql); 
      stmt.setString(1, searchFor); 
      rs = stmt.executeQuery(); 
      while (rs.next()) { 
       user = new User(rs.getString("username"), 
         rs.getInt("user_type"), OnlineStatus.ONLINE); 


       searchedUsers.add(user);     

      } 


      rs.close(); 
      stmt.close(); 

     } catch (SQLException ex) { 
      log.error("SQLException: " + ex.getMessage()); 
      log.error("SQLState: " + ex.getSQLState()); 
      log.error("VendorError: " + ex.getErrorCode()); 
     } 

問題是這樣的代碼只返回我搜索的第一個值,而不是值的其餘部分是從數據庫中選擇。可以請一些人指出我在這裏做錯了什麼。任何幫助將不勝感激。謝謝。

+0

是一些錯誤..它是用java – Hadi

+0

什麼是完整的SQL語句之前執行?否則,'searchFor'的價值是什麼。 – hafichuk

+0

完整的語句就像這樣.. 「SELECT *,COUNT(*)FROM users WHERE username =?」 searchFor是一個具有所需用戶名的字符串 – Hadi

回答

1

你不能在這樣的聲明中使用count(*)

它應該給你喜歡Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause

+0

它給出了同樣的輸出,當我不使用計數too ..爲什麼它不給我所有行與他相同的價值..任何想法.. – Hadi

+0

你試着直接在mysql瀏覽器或在mysql控制檯發射查詢嗎?它在那裏給了什麼結果? – gprathour

+0

是我試過了,它給了我正確的結果。 – Hadi

1

我認爲這是您的SELECT中的COUNT(*),它將對您的結果進行分組。嘗試沒有它

+0

我也試過沒有它..同樣的結果它只選擇第一個結果,不搜索具有相同名稱的其他結果。 – Hadi

+0

您是否曾嘗試在MySQL控制檯中運行該查詢並查看您獲得了多少結果? –

+0

是的,我得到了所有的結果。但在日食我沒有得到超過一個結果.. 總結果是3在sql查詢和日食它只有1 .. – Hadi