2011-04-13 46 views
1

我在Tomcat上運行以下代碼並且循環無法正常工作。每次我試圖檢查表中的新數據,名爲「enero」,條件沒有正確遵守,只有第一個動作完成...結束在表中輸入的重複記錄。從數據庫中檢索數據並將新數據寫入mysql

請你幫忙!

<%-- <jsp:getProperty name="beanInstanceName" property="propertyName"/> --%> 
<%@page import="java.sql.*"%> 
<% 
String REF=request.getParameter("d_ref"); 
String DATE=request.getParameter("i_date"); 
String UBC=request.getParameter("i_ubc"); 
%> 
<% 

    try 
    { 
     //Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
     //Connection connection=DriverManager.getConnection("jdbc:odbc:db1","",""); 
     Class.forName("com.mysql.jdbc.Driver").newInstance(); 
     Connection connection=DriverManager.getConnection("jdbc:mysql://localhost/labacacias?user=root&password=letmein"); 
     Statement statement=connection.createStatement(); 
     String query; 
     query="SELECT * FROM enero"; 
     boolean b=false; 
     ResultSet resultSet=statement.executeQuery(query);  
     while (resultSet.next()) 
     { 

     if (REF.equals(resultSet.getString(1)) && DATE.equals(resultSet.getString(2)) && UBC.equals(resultSet.getString(3))) 

      { 
      out.println("Datos ya han sido adjuntados anteriormente!"); 
      out.println("<a href=\"EneroU.jsp\">Click Aqui para Adjuntar nuevos Resultados</a>"); 
      break;     
      }    
     if (!REF.equals(resultSet.getString(1)) && !DATE.equals(resultSet.getString(2)) && !UBC.equals(resultSet.getString(3))) 
      { 
      pageContext.forward("InsertE.jsp"); 
      break;   
      } 

     } 
    } 
    catch (Exception e) 
    { 
     //e.printStackTrace(); 
     out.println(e.toString()); 
    } 

%> 

</body> 

回答

0

檢查你是否有條件。其中有很多& &。

如果第一個操作每次都完成,結果集和參數中的字符串可能會滿足if條件。

+0

我應該只有一個條件嗎? – Sheeyla 2011-04-13 14:35:48

+0

我只剩下一個條件,而且我輸入了一個重複的值,但它仍然在桌面上創建了一個新條目....不知道還有什麼要做! – Sheeyla 2011-04-13 14:40:16

+0

我的意思是根據你的邏輯。你可以使用||在你的條件。 – 2011-04-14 10:32:14

0

我不確定這是否是正確的方法。您似乎選擇了表中的所有行,並逐個比較它們作爲請求參數的詳細信息。如果它們全部匹配,則表示數據已經存在,否則如果傳入的值不匹配,則轉發到其他頁面。除非你的桌子只有一排,否則你會得到奇怪的結果。

什麼會更有意義的是從您的表中選擇col1 = REF和col2 = DATE和col3 = UBC。如果rs.next()== false,pageContext.forward(),否則out.println(「Datos ya han sido adjuntados anteriormente!」)

+0

感謝DaveHowes ....我如何確保表中的所有數據都被檢查,而不僅僅是一行?所以你說while循環不正確?我如何在我的代碼中加入col1 = REF和col2 = DATE和col3 = UBC?對不起,請求這麼多,但我是新的這一點,我的觀點是我看不到在我面前的答案...我一直在試圖解決這個問題在過去的兩天! – Sheeyla 2011-04-13 15:02:21

+0

DaveHowes ...這是我改變它的,但現在我得到一個語法錯誤...新的代碼是:和錯誤是這樣的:一個錯誤發生在行:31在jsp文件:/CreateE.jsp 不兼容的操作數類型的結果集和布爾 28:\t \t而(resultSet.next()) 29:\t \t { 30:\t \t 31:\t \t如果(的resultSet == FALSE)\t \t 32:\t \t \t { 33:\t \t \t pageContext.forward(「InsertE.jsp」); 34:\t \t \t} – Sheeyla 2011-04-13 15:19:11

+0

這是一個很大的話題,沒有簡短的答案。您需要在SQL語句中使用「WHERE」子句,並且應該考慮使用PreparedStatement將值提供給WHERE子句。網上有很多關於如何做到這一點的例子,所以谷歌可能是你的朋友。 – DaveH 2011-04-13 15:19:48