2013-10-05 83 views
0

我正在嘗試更新一個小應用程序的用戶配置文件。 該程序正在從以前的會話中取值,但我沒有相應地更新。 這裏是UserDAO的代碼...更新查詢給我在UserDAO.java麻煩

public String updateUser(userBean user)throws Exception{ 

     System.out.println("Reached update user"); 

     String result = null; 
     PreparedStatement stmtUpdate = null; 

     //Create a Database Connection 
     Connection con = ConnectionDAO.getJDBCConnection(); 
     try{ 
      System.out.println("Reached Try block"); 

      con.setAutoCommit(false);     
      StringBuffer sbUpdate = new StringBuffer(); 

      System.out.println("String buffer created"); 

      sbUpdate.append("UPDATE user SET "); 

      System.out.println(user.getUser()+ " details updating...."); 
      System.out.println(user.getFname()+ " ...."); 
      System.out.println(user.getLname()+ " ...."); 
      System.out.println(user.getMobileno()+ " ...."); 
      System.out.println(user.getEmail()+ " ...."); 
      System.out.println(user.getAddress()+ " ...."); 
      System.out.println(user.getDes()+ " ...."); 

      sbUpdate.append(" fname = '" + user.getFname() + "', "); 
      sbUpdate.append(" lname = '" + user.getLname() + "', "); 
      sbUpdate.append(" mobileno = '" + user.getMobileno() + "', "); 
      sbUpdate.append(" email = '" + user.getEmail() + "', "); 
      sbUpdate.append(" address = '" + user.getAddress() + "', "); 
      sbUpdate.append(" des = '" + user.getDes() + "', "); 

      sbUpdate.append(" where user='" + user.getUser() + "'"); 

      stmtUpdate = con.prepareStatement(sbUpdate.toString()); 

      System.out.println("prepare statement created"); 

      int rows = stmtUpdate.executeUpdate(); 

      System.out.println("int rows has a value"); 

      if (rows != 1){ 
       result = FAILURE; 
       System.err.println("Execute update error for user "+ user.getUser()); 

      } 

      result = SUCCESS; 
      ConnectionDAO.commitJDBCConnection(con); 
     }catch (SQLException ex){ 
      result = FAILURE; 
      ConnectionDAO.rollbackJDBCConnection(con); 

     } 
     finally{ 
      ConnectionDAO.closeStatement(stmtUpdate); 
      ConnectionDAO.closeJDBCConnection(con); 
     } 
     return result; 
    } 

控制檯顯示...

INFO: Server startup in 460 ms 
Oct 05, 2013 11:52:21 PM com.kbcss.DAO.UserDAO checkUser 
INFO: Logging for user: sri 
Reached update user 
Reached Try block 
String buffer created 
sri details updating.... 
sri .... 
sai .... 
789456130 .... 
[email protected] .... 
123456 .... 
qwert .... 
prepare statement created 

我所知道的是....

它顯示,直到「準備陳述「,但後來會發生什麼? 沒有...程序終止了! :( 任何想法是極大的讚賞..

難道我錯了?

PS..i'm新來這個世界!!!!

+1

爲了解問題,在catch塊中做ex.printStackTrace(); –

回答

1

這個問題似乎在

sbUpdate.append(" des = '" + user.getDes() + "', ");

語法錯誤嘗試在除去末端的逗號。另外這是不使用準備的正確方法ared聲明。

1

不要在查詢中的WHERE關鍵字前面加一個逗號。這會導致查詢無提示回滾並返回FAILURE

+0

我是怎麼想的:(....感謝,看看我的代碼:) –

+0

沒關係,碰巧發生在我們所有人身上。順便說一句,艾曼是正確的;你需要使用參數化查詢(網上有很多例子)。您現在的查詢存在SQL注入風險。 –