日期:2014-05-17  浏览次数:20621 次

无法查询到数据库中存在的记录
我的作业中有使用一个现成的MySqlHelper类,主要用于对数据库的操作。我的数据库中有一个damin表,列名“aName,aPwd”有一条记录“admin,1234”。现在我使用这个方法来查询的话,在JUnit中测试,如果查询的是不存在的用户名,测试是通过的,如果查询的是存在的“admin”则会提示空指针异常,指向的代码,下面我有标出。请各位帮我看下问题出在了哪里。谢谢。

我在dao中调用了MySqlHelper中的这个方法
Java code
/**
     * 返回查询结果集
     * 
     * @param SQL语句
     * @param 附带参数
     * @return 返回结果,用ArrayList包装Object数组
     * @throws SQLException
     * 
     * @example ArrayList list =
     *          mysqlhelper.ExecuteReader("Select * from Documents",null); <br/>
     *          for(int i = 0;i&lt;list.size();i++) { <br/> &nbsp;&nbsp;Object[]
     *          obs = (Object[])list.get(i); <br/> &nbsp;&nbsp;for(int j =
     *          0;j&lt;obs.length;j++) { <br/>
     *          &nbsp;&nbsp;&nbsp;&nbsp;out.print(obs[j].toString()); <br/>
     *          &nbsp;&nbsp;} <br/> &nbsp;&nbsp;out.print("&lt;br/&gt;"); <br/>
     *          } <br/>
     * 
     */
    public static ArrayList ExecuteReader(String cmdtext, Object[] parms)
            throws SQLException {
        PreparedStatement pstmt = null;
        Connection conn = null;
        ResultSet rs = null;
        try {
            conn = getConnection();
            pstmt = conn.prepareStatement(cmdtext);

            prepareCommand(pstmt, parms);
            rs = pstmt.executeQuery();

            ArrayList al = new ArrayList();
            ResultSetMetaData rsmd = rs.getMetaData();
            int column = rsmd.getColumnCount();

            while (rs.next()) {
                Object[] ob = new Object[column];
                for (int i = 1; i <= column; i++) {
                    ob[i - 1] = rs.getObject(i);
                }
                al.add(ob);
            }
            return al;

        } catch (Exception ex) {
        }
        finally{
            if (rs != null)
                rs.close();
            if (pstmt != null)
                pstmt.close();
            if (conn != null)
                conn.close();
        }
        return null;
    }


dao包中对于的方法是想调用该方法查询数据库中admin表的信息。
接口:
Java code
package com.mjrg.mjb2c.model.dao.impl;

import com.mjrg.mjb2c.model.bean.Admin;

public interface IAdminDao {

    public abstract Admin SelectByName(String aName);

}

实现接口:
Java code
package com.mjrg.mjb2c.model.dao;

import java.sql.SQLException;
import java.util.ArrayList;

import com.mjrg.mjb2c.db.MySqlHelper;
import com.mjrg.mjb2c.model.bean.Admin;
import com.mjrg.mjb2c.model.dao.impl.IAdminDao;

public class AdminDao implements IAdminDao {
    /* (non-Javadoc)
     * @see com.mjrg.mjb2c.model.dao.IAdminDao#SelectByName(java.lang.String)
     */
    public Admin SelectByName(String aName){
        Admin admin=null;
        String sql = "SELECT * FROM admin WHERE aName=?";
        String[] parms={aName};
        try {
            ArrayList adLst = MySqlHelper.ExecuteReader(sql,parms);
            if(adLst.size()>0){
                                //空指针异常指向这句
                admin=(Admin)adLst.get(0);
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printS