![](/img/trans.png)
[英]Prepared Statement seems to return always null in java servlet
[英]Servlet login with prepared statement
我嘗試找出以下代碼中的錯誤在哪里:
public void service(HttpServletRequest request, HttpServletResponse response){
try{
user1 = request.getParameter("nameLog");
pass1 = request.getParameter("passLog");
String userid = null;
String passdb = null;
String query = "select user, pass from login where `user` = ? and `pass`=?";
PreparedStatement pst = conn.prepareStatement(query);
ResultSet rs = pst.executeQuery();
pst.setString(1, user1);
pst.setString(2, pass1);
while(rs.next()){
userid = rs.getString("user1");
passdb = rs.getString("pass1");
pst.executeQuery();
}
if(userid.equals(user1)&& passdb.equals(pass1)){
response.sendRedirect("/WebContent/login/Main.html");
}
}catch(Exception ex){
ex.printStackTrace();
}
}
我嘗試登錄到我的應用程序(數據庫列名稱為user
和pass
),但出現錯誤:
java.sql.SQLException: No value specified for parameter 1
在這一行
ResultSet rs = pst.executeQuery();
如何擺脫此錯誤並登錄到我的頁面?
謝謝
訂單很重要! 您需要在調用executeQuery
之前傳遞參數,如下所示:
PreparedStatement pst = conn.prepareStatement(query);
pst.setString(1, user1);
pst.setString(2, pass1);
ResultSet rs = pst.executeQuery();
您正在執行查詢,然后再設置值。 它應該是:
PreparedStatement pst = conn.prepareStatement(query);
pst.setString(1, user1);
pst.setString(2, pass1);
ResultSet rs = pst.executeQuery();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.