出错提示
java.lang.NullPointerException at ClientQuery.getResInfo(ClientQuery.java:51) at ClientQuery.main(ClientQuery.java:10)Exception in thread "main" Process exited with exit code 1.代码import java.sql.*;public class ClientQuery 
{
    public static void main(String[] args)
  {
    ClientQuery c = new ClientQuery();
//下面这行出错  c.getResInfo("100000")肯定可以取到值
    String s[] = c.getResInfo("100000");
    for(int i = 0;i<s.length;i++)
    {
      System.out.println(s[i]);
    }
  }
    private Connection getConn() {
    String DRIVER="oracle.jdbc.driver.OracleDriver";
    String URL="jdbc:oracle:thin:@shanghai.com:1521:shzt";
    String USER="scott";
    String PWD="tiger";
    Connection conn = null;
    try {
     Class.forName(DRIVER).newInstance();
     conn = DriverManager.getConnection(URL,USER,PWD);
    
    }catch(Exception e) {
      e.printStackTrace();
    }
    return conn;
    }
    public String[] getResInfo (String name) {
    String sql = "select * from emp";
      Connection conn = getConn();
    ResultSet rs = null;
    Statement stmt = null;
      String str[] = null;
      int i = 1;      try {
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
      while(rs != null && rs.next())
      {
      System.out.println(rs.getString(1)+i);
  //下面这行出错
        str[i-1] = rs.getString(i);
        i++;
      }
      }catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
      
      
      return str;
}
}

解决方案 »

  1.   

    String str[] = null;
    str[i-1] = rs.getString(i);str未初始化,就被使用!!!
      

  2.   

    关注一下,楼主你传的name参数是做什么用的?
      

  3.   

    String s[] 不提昌用这种方法,在C\C++中可以用这种动态分配数组大小,但在JAVA中不要这种。
    有两种数组定义,一是在定义数据时初始化它的内存大小如:String s[10]=nill .....这种方法不可能动态设置数组大小,并不支持插入移除元素。慎用。
    二是用ArrayList,可动态分配数据容量,实现了List接口,可以插入object对象。这个概念有点复杂,具体参看JAVA核心技术第二卷第二章“集合”。你会学到更多,当然,分也要给我一份。谢谢
      

  4.   

    String s[] = null;
    你在初始化的时候没有分配空间,便直接使用,最好new一下,分配空间.如:String s[]  = new String[100];