2016-12-29 18 views
0
String user = request.getParameter("uname"); 
String pwd = request.getParameter("pass"); 
String pwd1 = request.getParameter("pass"); 
String pwd2 = request.getParameter("pass"); 

try{ 
    Class.forName("com.mysql.jdbc.Driver"); 
    String url = "jdbc:mysql://localhost:3306/logindb"; 
    Connection con = DriverManager.getConnection(url, "root", "root"); 

    String sql = "select * from register"; 
    PreparedStatement ps = con.prepareStatement(sql); 
    ps.setString(1, pwd); 
    ps.setString(2, request.getParameter("uname")); 
    ResultSet rs = ps.executeQuery(); 
    if(rs.next()) 
    { 
     sql = "update register set pass=? where uname=? "; 
     ps = con.prepareStatement(sql); 
     ps.setString(1, pwd); 
     ps.setString(2, request.getParameter("uname")); 
     ps.executeUpdate(); 
     out.println("password changed"); 

    } 
} 
catch(Exception e) 
{ 
    out.println(e); 
} 

更改密碼列這是我的代碼,它會告訴我這樣一個錯誤如何在mysql中

值java.sql.SQLException:參數指標超出範圍(1>參數的數量,這是0)**

+1

'String sql =「select * from register」;'不要指望任何參數,但你設置了兩個(更新查詢的副本;)) – AxelH

回答

2

這裏:

String sql = "select * from register"; 
PreparedStatement ps = con.prepareStatement(sql); 
ps.setString(1, pwd); 
ps.setString(2, request.getParameter("uname")); 

您嘗試設置是不存在的參數。看起來像複製粘貼錯誤。最後2行不應該在那裏。

+0

我只能同意你,因爲我們有相同的結論; ) – AxelH

+0

@AxelH我也注意到了:) –

+0

用於複製和粘貼錯誤:) – itwasntme