ResultSet为空的问题
登录网站访问数据库的过程中……
Serevlet 代码如下
package ser;import impl.AccountImpl;import it.shopping.dao.IAccount;import it.shopping.pojo.Account;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class AccountSer extends HttpServlet{ private IAccount accountImpl = new AccountImpl(); private static final long serialVersionUID = -3708568559174453120L; public AccountSer() { super(); } public void destroy() { super.destroy(); // Just puts "destroy" string in log // Put your code here } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String status = request.getParameter("status"); if(status.equals("login")) { Account account = new Account(); account.setAlogin(request.getParameter("alogin")); account.setApass(request.getParameter("apass")); account =accountImpl.queryAccount(account); if(account == null) { request.setAttribute("error", "登录失败"); request.getRequestDispatcher("/alogin.jsp").forward(request, response); System.out.println("doPost is invoked"); } else { request.getSession().setAttribute("account", account); response.sendRedirect("/t31/admin/index.jsp"); } } } public void init() throws ServletException { // Put your code here System.out.println("init is invoked"); }}package impl;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import utils.JdbcUtils;import it.shopping.dao.IAccount;import it.shopping.pojo.Account;public class AccountImpl implements IAccount{ @Override public Account queryAccount(Account account) { Account temp = null; Connection conn = null; PreparedStatement pre = null; String sql = "SELECT * FROM students WHERE alogin=? AND apass=?"; ResultSet rs = null; try { conn = JdbcUtils.getConnection(); pre= conn.prepareStatement(sql); pre.setObject(1,"alogin"); pre.setObject(2,"apass"); System.out.println("pre is invoked"); rs = pre.executeQuery(); System.out.println(rs.getString(1)); if(rs.next()) { temp = new Account(); temp.setAid(rs.getInt("aid")); temp.setAlogin(rs.getString("alogin")); temp.setApass(rs.getString("apass")); } } catch (SQLException e){ e.printStackTrace(); } finally{ JdbcUtils.free( rs,pre,conn); } return temp; }}package utils;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;/** * * 2008-12-6 * * @author <a href="mailto:liyongibm@hotmail.com">????</a> * */public final class JdbcUtils { private static String url = "jdbc:mysql://localhost:3306/shopping"; private static String user = "root"; private static String password = "593295570dr"; private JdbcUtils() { } static { try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { throw new ExceptionInInitializerError(e); } } public static Connection getConnection() throws SQLException { return DriverManager.getConnection(url, user, password); } public static void free(ResultSet rs, Statement pre, Connection conn) { try { if (rs != null) rs.close(); } catch (SQLException e) { e.printStackTrace(); } finally { try { if (pre != null) pre.close(); } catch (SQLException e) { e.printStackTrace(); } finally { if (conn != null) try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }}
package it.shopping.pojo;public class Account{ private int aid; private String alogin; private String apass; public int getAid() { return aid; } public void setAid(int aid) { this.aid = aid; } public String getAlogin() { return alogin; } public void setAlogin(String alogin) { this.alogin = alogin; } public String getApass() { return apass; } public void setApass(String apass) { this.apass = apass; } }package it.shopping.dao;import it.shopping.pojo.Account;public interface IAccount{ public Account queryAccount(Account account);} public Account queryAccount(Account account) { Account temp = null; Connection conn = null; PreparedStatement pre = null; String sql = "SELECT * FROM students WHERE alogin=? AND apass=?"; ResultSet rs = null; try { conn = JdbcUtils.getConnection(); pre= conn.prepareStatement(sql); // 你的用户名和密码不是都放在account里的吗,怎么下面直接写死了? pre.setObject(1,"alogin"); // 是否是pre.setString(1,account.getAlogin());? pre.setObject(2,"apass"); // pre.setString(1,account.getApass());
[解决办法]
你传过来的是个对象,直接用它的属性怎么行呢,应该这样account.getAlogin());就行了