import java.io.File;
import java.io.FileInputStream;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;public class test{
public static void main(String args[]){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e){
System.out.print(e);
}try{
String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=c:/java/200607130507.mdb";
Connection conn = DriverManager.getConnection(url);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM Documents");

while(rs.next()){
System.out.print(rs.getString(1)+"\n");
System.out.print(rs.getString(2)+"\n");
}
rs.close();
stmt.close();
conn.close();
}
catch(Exception ex){
System.out.print(ex);
}
}
}报错:java.lang.NullPointerException 
但我放在测试机上可以通过
然放在正式运行的环境下报:java.lang.NullPointerException 
不知道什么原因(正式环境下安装了offiec)
sun.jdbc.odbc.JdbcOdbcDriver的驱动包是除了rt.jar,还要用到其它包吗?

解决方案 »

  1.   

    猜测,是不是“c:/java/200607130507.mdb”文件在两机路径不对?最好把错误贴出来一部分,引起NullPointerException的原因很多,这让我们怎么判断?
      

  2.   

    最好用这个ex.printStackTrace();替System.out.print(ex);
    这样比较容易知道哪里出错。
      

  3.   

    嗯,打StackTrace出来,马上就能看出来了。
      

  4.   

    java.lang.NullPointerException
            at sun.jdbc.odbc.JdbcOdbcDriver.initialize(JdbcOdbcDriver.java:435)
            at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:153)
            at java.sql.DriverManager.getConnection(DriverManager.java:538)
            at java.sql.DriverManager.getConnection(DriverManager.java:210)
            at test.main(test.java:19)
      

  5.   

    Connection conn = DriverManager.getConnection(url);
    第19行是不是就是这个? 显然是url的问题。因此,pdvv(我爱花猫)的猜测是有道理的。
      

  6.   

    也许两个机器上的office版本有差别? 瞎猜的。我认为,java应用程序,应该考虑使用嵌入式的纯java数据库,使用access,不好。
    apache.DB.Derby是一个不错的选择。
      

  7.   

    哈哈
    解决了
    装了jdk就好了
    谢谢各位