Exception in thread "main" java.lang.NullPointerException
at A.test.java.Dao.getlist(Dao.java:18)
at A.test.java.test.main(test.java:13)
第一次发帖 希望大家能帮小弟解决  谢谢
=============================================================================
package A.test.java;import java.sql.Connection;
import java.sql.DriverManager;public class Base {
static Connection con(){
Connection con=null;
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con = DriverManager
.getConnection("jdbc:sqlserver://localhost:1433; DatabaseName=Test_java");
} catch (Exception e) {
// TODO: handle exception
}
return con;
}
}
---------------------------------------------------------------------------------
package A.test.java;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;public class Dao {
public List getlist(){
List list=new ArrayList();
Connection conn=null;
PreparedStatement ps=null;
ResultSet rs=null;
conn=Base.con();
try {
ps=conn.prepareStatement("select * from ATEST");
rs=ps.executeQuery();
while(rs.next()){
String name=rs.getString(1);
int age=rs.getInt(2);
String sex=rs.getString(3);
People people=new People(name,age,sex);
list.add(people);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
}
--------------------------------------------------------------------------
package A.test.java;public class People {
String name;
int age;
String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public People(String name, int age, String sex) {
super();
this.name = name;
this.age = age;
this.sex = sex;
}

}
-----------------------------------------------------------------------
package A.test.java;import java.util.Iterator;
import java.util.List;public class test { /**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
List ll=new Dao().getlist();
Iterator it=ll.iterator();
while(it.hasNext()){
People p=(People)it.next();
System.out.println(p.getName()+"\t"+p.getAge());
}
}}

解决方案 »

  1.   

    try {
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    con = DriverManager
    .getConnection("jdbc:sqlserver://localhost:1433; DatabaseName=Test_java");
    } catch (Exception e) {
    // TODO: handle exception
    }catch中把异常打出来。或者你这样:
    throw new RuntimeException(e);
      

  2.   

    import java.sql.Connection;
    import java.sql.DriverManager;public class Base {
    static Connection con() {
    Connection con = null;
    try {
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    con = DriverManager
    .getConnection("jdbc:sqlserver://localhost:1433; DatabaseName=Test_java");
    } catch (Exception e) {
    e.printStackTrace();
    }
    return con;
    }
    }先把这个类改一下,把异常打印出来
    看下是不是数据库连接就没成功
    如果这里不成功
    conn=Base.con();
    会返回一个null
    之后再做
    ps=conn.prepareStatement("select * from ATEST");
    就空指针出错了
      

  3.   

    从异常行号来看,就是数据库连接出了问题,可以像1楼2楼所说,将异常打印出来看。连数据库的代码并没有错,也就是说,可能这两个方面错
    1. 数据库驱动jar包没加

    2. 数据库连接配置有差错
      

  4.   

    嗯。Widnows登录方式下SQL Server可以不写。