无法查询到数据库中存在的记录解决方案
无法查询到数据库中存在的记录
我的作业中有使用一个现成的MySqlHelper类,主要用于对数据库的操作。我的数据库中有一个damin表,列名“aName,aPwd”有一条记录“admin,1234”。现在我使用这个方法来查询的话,在JUnit中测试,如果查询的是不存在的用户名,测试是通过的,如果查询的是存在的“admin”则会提示空指针异常,指向的代码,下面我有标出。请各位帮我看下问题出在了哪里。谢谢。
我在dao中调用了MySqlHelper中的这个方法
dao包中对于的方法是想调用该方法查询数据库中admin表的信息。
接口:
实现接口:
用JUnit测试的代码如下:(其中“Admin”是JAVA Bean,只有get,set方法以及一个不带餐的构造函数,和一个带参的构造函数)
我的作业中有使用一个现成的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<list.size();i++) { <br/> Object[] * obs = (Object[])list.get(i); <br/> for(int j = * 0;j<obs.length;j++) { <br/> * out.print(obs[j].toString()); <br/> * } <br/> out.print("<br/>"); <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.printStackTrace(); } return admin; } }
用JUnit测试的代码如下:(其中“Admin”是JAVA Bean,只有get,set方法以及一个不带餐的构造函数,和一个带参的构造函数)
- Java code
package com.mjrg.mjb2c.test; import org.junit.BeforeClass; import org.junit.Test; import com.mjrg.mjb2c.model.bean.Admin; import com.mjrg.mjb2c.model.dao.AdminDao; import com.mjrg.mjb2c.model.dao.impl.IAdminDao; public class myTest { @BeforeClass public static void setUpBeforeClass() throws Exception { } @Test public void adminTset(){ IAdminDao ad = new AdminDao(); //空指针异常指向这句 Admin admin = ad.SelectByName("admin"); if(admin!=null){ System.out.print(admin.getaName()+","+admin.getaPwd()); }else{ System.out.print("null"); } } }