当前位置: 代码迷 >> Java相关 >> 请问这个返回调用为什么会出错?
  详细解决方案

请问这个返回调用为什么会出错?

热度:330   发布时间:2006-07-25 10:24:50.0
请问这个返回调用为什么会出错?

SearchBean:
package pbc;

import java.sql.*;
import java.util.ArrayList;

public class SearchBean {
private String strSql,companyName,address,tel1 = null;

public ArrayList openDb() {
ArrayList arrlist = null;
String strSql = "select top 10 * from speed.dbo.tblcompany";
try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
String connectionUrl = "jdbc:microsoft:sqlserver://localhost;database=speed;user=sa;password=123456";
Connection conn = DriverManager.getConnection(connectionUrl);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(strSql);
while (rs.next()) {
arrlist.add(rs.getString("companyname"));
}
conn.close();
}
catch(Exception ex){
System.out.println(ex);
System.exit(0);
}
return arrlist;

}
}

调用此Bean的ActionForm
ArrayList arrlist = searchdata.openDb();


然后这一句出错了,出错的消息为:java.lang.NullPointerException

请问为什么?


----------------解决方案--------------------------------------------------------

大哥你的程序能不能发完整点,还有格式写模块化一点


----------------解决方案--------------------------------------------------------
很可能是searchdata没有被new
----------------解决方案--------------------------------------------------------
楼上的很有想象力
----------------解决方案--------------------------------------------------------
恩恩,有根据的嘛
ArrayList arrlist = searchdata.openDb();
楼主说这句抛出个空指针异常,而这句唯一能出现空指针异常的只有 searchdata.openDb();
当 searchdata=null 的时候整用了openDb(); 抛出NULL POINT EXCEPTION

之所以说很有可能是searchdata没有被new,可能只是可是new,因为searchdata的获取还有很多种途径。
比如通过setter或者构造函数获得,或者从子类或者如果searchdata是个接口的话那就是实现了这个接口的类中转换过来。这是不确定的,所以用可能这个词语。

又为什么再前面加个很字呢,那是因为从楼主的SearchBean类来看明显是一个只继承了Object的类,但是也有比较小的一部分可能searchdata是一个SearchBean类的子类。
----------------解决方案--------------------------------------------------------
以下是引用神vLinux飘飘在2006-7-25 18:59:07的发言:
恩恩,有根据的嘛
ArrayList arrlist = searchdata.openDb();
楼主说这句抛出个空指针异常,而这句唯一能出现空指针异常的只有 searchdata.openDb();
当 searchdata=null 的时候整用了openDb(); 抛出NULL POINT EXCEPTION

之所以说很有可能是searchdata没有被new,可能只是可是new,因为searchdata的获取还有很多种途径。
比如通过setter或者构造函数获得,或者从子类或者如果searchdata是个接口的话那就是实现了这个接口的类中转换过来。这是不确定的,所以用可能这个词语。

又为什么再前面加个很字呢,那是因为从楼主的SearchBean类来看明显是一个只继承了Object的类,但是也有比较小的一部分可能searchdata是一个SearchBean类的子类。

我语文学的不咋的,有句话没看明白,不过从表面看来,这句话写的很有逻辑和层次,富有内涵和神韵,是我辈学习的典范,容我在研究再三~~~!


----------------解决方案--------------------------------------------------------
不要调我拼音输入法的错误 T_T
----------------解决方案--------------------------------------------------------
  相关解决方案