2011-03-15 97 views
0

我在更新我的web應用程序中的mysql時遇到問題.. 我無法更新條目在Web應用程序中更新mysql

它成功地進入servlet的...但它不更新條目,我懷疑它是關於我的查詢......

它是這樣的:

String query = "UPDATE members SET Username = ?, Password = ?, FirstName = ?, " 
      + "MiddleName = ?, LastName = ?, Address = ?, Email = ? " 
      + "WHERE memberId = ? AND Username = ?"; 

是那有效?

這是我的servlet代碼:

公共類EditMember延伸的HttpServlet {

protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    response.setContentType("text/html;charset=UTF-8"); 
    PrintWriter out = response.getWriter(); 
    Connection con = null; 
    PreparedStatement stmt = null; 
    ResultSet rs = null; 
    String query = "UPDATE members SET Username = ?, Password = ?, FirstName = ?, " 
      + "MiddleName = ?, LastName = ?, Address = ?, Email = ? " 
      + "WHERE memberId = ? AND Username = ?"; 

    try { 
     Class.forName(Connect.DRIVER); 
     con = DriverManager.getConnection(Connect.CONNECTION_STRING, 
       Connect.USERNAME, Connect.PASSWORD); 

     String currUserame = request.getParameter("CreateUsername"); 
     String currPassword = request.getParameter("CreatePassword"); 
     String currFirstName = request.getParameter("CurrFirstName"); 
     String currMiddleName = request.getParameter("currMiddleName"); 
     String currLastName = request.getParameter("currLastName"); 
     String currAddress = request.getParameter("currAddress"); 
     String currEmail = request.getParameter("currEmail"); 

     int memberId = Integer.parseInt(request.getParameter("memberId")); 
     String oldPassword = request.getParameter("Password"); 

      stmt = con.prepareStatement(query); 
      stmt.setString(1, currUserame); 
      stmt.setString(2, currPassword); 
      stmt.setString(3, currFirstName); 
      stmt.setString(4, currMiddleName); 
      stmt.setString(5, currLastName); 
      stmt.setString(6, currAddress); 
      stmt.setString(7, currEmail); 

      stmt.setInt(8, memberId); 
      stmt.setString(9, oldPassword); 
      stmt.executeUpdate(); 

      out.println("Success");//for testing only 

    } catch (Exception ex) { 
     out.println("Exception"); 
    } finally { 
     try { 
      con.close(); 
     } catch (SQLException ex) { 
      out.println("Sql Exception"); 
     } 
     out.close(); 
    } 
} 

//HttpServlet methods were placed here 

}

,這是我的jsp:

<body> 
    <form action="EditMember"> 
     <h1>Enter old Info</h1><br/> 
     Enter your Id: 
     <input type="text" name="memberId"><br/> 
     Enter your Password: 
     <input type="password" name="Password" /><br/> 

     <h1>Enter New Info</h1><br/> 
     User Name: 
     <input type="text" name="CreateUsername" /><br/> 
     Re-Enter/New Password: 
     <input type="password" name="CreatePassword" /><br/> 
     First Name: 
     <input type="text" name="CurrFirstName"><br/> 
     Middle Name: 
     <input type="text" name="currMiddleName"><br/> 
     Last Name: 
     <input type="text" name="currLastName"><br/> 
     Address: 
     <input type="text" name="currAddress"><br/> 
     Email Add.: 
     <input type="text" name="currEmail"> 
     <br/> 
     <input type="submit" name="Submit" id="Submit" value="Save New Info" /> 
    </form> 
</body> 

我已經檢查每一個變量我在JSP中使用它,如果它與我在我的servlet中使用的變量匹配的話,那就是所有這些ame ..因此,除了QUERY之外,我不知道導致問題的其他因素......

請幫助....非常感謝!

+0

ooooppppsss ....一個變量在我的查詢中衝突下面的代碼:) – iamanapprentice 2011-03-15 11:13:39

+0

你好。 musta na?你還有這個問題嗎? YM你呢? – newbie 2011-03-15 12:53:19

+0

ok na newbie ...謝謝:) – iamanapprentice 2011-03-15 13:46:23

回答

1

您正在將錯誤的變量綁定到查詢的最後一個參數。你在做stmt.setString(9, oldPassword);,它可能應該是stmt.setString(9, oldUsername);

而順便說一句,如果memberId是主鍵或唯一鍵,那麼您不需要WHERE子句中的AND username = ?部分。

+0

感謝Sir Carlos ...我看到了它,當我檢查我的代碼...並感謝有關「WHERE」子句,我不知道它是有效的......感謝新的信息...非常感謝謝謝.. :) – iamanapprentice 2011-03-15 11:17:53

+0

歡迎:) – 2011-03-15 12:13:42