有人可以告訴我爲什麼這不起作用嗎?我希望能夠檢查從數據庫查詢返回的用戶名/密碼是否等於一個值。結果集jsp - 如何使用?
會話屬性「loginSuccess」始終返回false,即使這些值應該匹配。
<%@ page language="java" import="java.sql.*" %>
<%
String driver = "oracle.jdbc.driver.OracleDriver";
Class.forName(driver).newInstance();
Connection con = null;
ResultSet rst = null;
Statement stmt = null;
try {
String url = "jdbc:oracle:thin:username/[email protected]:port:SID";
con = DriverManager.getConnection(url);
stmt = con.createStatement();
} catch (Exception e) {
System.out.println(e.getMessage());
}
if (request.getParameter("action") != null) {
rst = stmt.executeQuery("select username, password"
+ " from table");
}
%>
<%
boolean loginCheck = false;
int count = 1;
while (rst.next()) {
if(request.getParameter("action")!=null){
if("username1"==rst.getString("username")){
if("password1"==rst.getString("password")){
loginCheck = true;
}
}
}
count++;
}
if(loginCheck==true){
session.setAttribute("loginSuccess", "true");
}else{
session.setAttribute("loginSuccess", "false");
}
rst.close();
stmt.close();
con.close();
%>
<jsp:forward page="login.jsp"/>
哈!很簡單。當我寫這些時,我一定是在Javascript模式下。感謝您注意! – etech22 2011-03-18 23:10:32
感謝您的額外提示..仍然是新的,所以很感激。 – etech22 2011-03-18 23:15:02
@etech:我也推薦學習SQL'WHERE'子句。您不必要地將整個數據庫表複製到Java內存中,比較Java中的每一行並忽略不匹配的數據。多麼浪費資源。只要利用SQL的權力。編寫你的SQL查詢,以便它返回與用戶名/密碼匹配的行。如果它返回一行,它是有效的。如果它什麼都不返回,它是無效的。簡單和更有效率,尤其是如果你有很多行在表中;) – BalusC 2011-03-19 04:49:23