下面是代码,但老是抛出空指针异常.是不是还得导什么包呀?
public static synchronized Connection getConnect() throws SQLException {
Connection conn = null;
try {
// Jdbc-odbc bridge
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url = "jdbc:odbc:driver={Microsoft Access Driver(*.mdb)}; DBQ=G:\\test.mdb";
System.out.println("---------前");
conn = DriverManager.getConnection(url,"","");//这里出错
System.out.println("---------后");
conn.setAutoCommit(true);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}

解决方案 »

  1.   

    用DriverManager.getConnection(url),别用带用户名密码的方式
      

  2.   

    String url = "jdbc:odbc:test";
    Connection conn = DriverManager.getConnection(url,"","");
      

  3.   

    conn = DriverManager.getConnection(url,"","");
    把这个出错的语句的第二个参数设置一个默认用户名就可以了,例如
    conn = DriverManager.getConnection(url,"admin","");
    其它地方不用改。
      

  4.   

    不用导包,我试过,不过我的access文件是有密码的,估计密码也不能为空吧。
    不知道你的access文件有没有密码,如果没有,你随便给个密码看行不行。
      

  5.   

    import java.sql.DriverManager;
    import java.sql.SQLException;public class DBConnection {
    private final static String DBDRIVER = "sun.jdbc.odbc.JdbcOdbcDriver"; 
    private final static String DBURL = "jdbc:odbc:数据源名字";
    private final static String DBUSER     ="";
    private final static String DBPASSWORD ="";
    private static Connection conn = null;
    public DBConnection(){
    try {
    Class.forName(DBDRIVER);
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    }
    try {
    conn =  DriverManager.getConnection(DBURL);
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }

    public  Connection getConnection(){ if(conn==null)
    {
    try
    {
    Class.forName(DBDRIVER) ;
    conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ;
    return conn ;

    }
    catch (Exception e)
    {
    e.printStackTrace();

    } }
    return conn;

    }
    }
      

  6.   

    这是第二种方式:
    public class DBConnection {
    private final static String DBDRIVER = "sun.jdbc.odbc.JdbcOdbcDriver"; 
    private final static String DBURL = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=";
    private final static String DBUSER     ="";
    private final static String DBPASSWORD ="";
    private static Connection conn = null;
    public DBConnection(){
    try {
    Class.forName(DBDRIVER);
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    }
    try {
    conn =  DriverManager.getConnection(DBURL+"G:\\test.mdb");
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }

    public  Connection getConnection(){ if(conn==null)
    {
    try
    {
    Class.forName(DBDRIVER) ;
    conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ;
    return conn ;

    }
    catch (Exception e)
    {
    e.printStackTrace();

    } }
    return conn;
    }
    }
      

  7.   

    java.lang.NullPointerException
    at sun.jdbc.odbc.JdbcOdbcDriver.initialize(Unknown Source)
    at sun.jdbc.odbc.JdbcOdbcDriver.connect(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at util.JDBCUtil.getConnect(JDBCUtil.java:25)
    at util.JDBCUtil.main(JDBCUtil.java:36)就是这一种错误
      

  8.   

    package action;import java.sql.*;public class DBConnection {
    private final static String DBDRIVER = "sun.jdbc.odbc.JdbcOdbcDriver";
    private final static String DBURL = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=";
    private final static String DBUSER = "";
    private final static String DBPASSWORD = "";
    private static Connection conn = null; public DBConnection() {
    try {
    Class.forName(DBDRIVER);
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    }
    try {
    conn = DriverManager.getConnection(DBURL + "G:\\test.mdb");
    } catch (SQLException e) {
    e.printStackTrace();
    }
    } public static Connection getConnection() { if (conn == null) {
    try {
    Class.forName(DBDRIVER);
    conn = DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD);
    return conn; } catch (Exception e) {
    e.printStackTrace(); } }
    return conn;
    }

    public static void main(String[] args) {
    try {
    Connection conn = getConnection(); System.out.println("===");
    } catch (Exception e) {
    e.printStackTrace();
    }
    }}
    这是抛出的异常....不知上面的这位哥们试了没有,是不是也是同样的错误啊?
    ===
    java.lang.NullPointerException
    at sun.jdbc.odbc.JdbcOdbcDriver.initialize(Unknown Source)
    at sun.jdbc.odbc.JdbcOdbcDriver.connect(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at action.DBConnection.getConnection(DBConnection.java:30)
    at action.DBConnection.main(DBConnection.java:44)
      

  9.   

    用ODBC的吧:
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") ; 
    String url="jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ="+application.getRealPath("/Data/ReportDemo.mdb"); 
    Connection conn = DriverManager.getConnection(url,"",""); 
    Statement stmtNew=conn.createStatement() ;-------------------
    直接配置数据源也可以
    //加载注册驱动
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    //获取数据库连接
    Connection con = DriverManager.getConnection("jdbc:odbc:dbname");
      

  10.   

    java里有这个东东吗?application,我好象记得是VS里的.
    谁试通了,说一下吗,卡了我一天了
      

  11.   

    直接配置数据源好了:
    //First,load driver program
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    //Second,create connection 
    String url="jdbc:odbc:DBAccess";//DBAccess数据源名
    String user="";
    String password="";
    Connection con=null;
    Statement st=null;
    ResultSet rs=null;
    con=DriverManager.getConnection(url, user, password);
    st=con.createStatement();控制面板--管理工具--数据源
      

  12.   

    上面的图看不见,不就是按你上面的步骤配吗?最后选择系统DSN标签,改一下数据源的名称,完了指定一个mdb文件,不就好了吗?是这样的吧?我就是按上面说的做的,可是就是抛出同样的异常呀,有鬼了....
      

  13.   

    这我完整的程序,运行OK:
    import java.sql.*;
    public class TestAccess {
    public static void main(String[] args) {
    try {
    //First,load driver program
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    //Second,create connection 
    String url="jdbc:odbc:DBAccess";//DBAccess数据源名
    String user="";
    String password="";
    Connection con=null;
    Statement st=null;
    ResultSet rs=null;
    con=DriverManager.getConnection(url, user, password);
    st=con.createStatement();

    rs=st.executeQuery("select * from student");
    System.out.println("编号\t"+"姓名\t"+"性别");
    while(rs.next())
    {
    System.out.println(rs.getString(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3));
    }
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    catch (ClassNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }
      

  14.   

    我知道了
    private final static String DBURL = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ="; 后面把路径加上
      

  15.   

    不要用构造函数:
    import java.sql.*; public class DBConnection { 
    private final static String DBDRIVER = "sun.jdbc.odbc.JdbcOdbcDriver"; 
    private final static String DBURL = "jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ=E:\\Java\\JavaDemo\\DBTest.mdb"; 
    private final static String DBUSER = ""; 
    private final static String DBPASSWORD = ""; 
    private static Connection conn = null; // public DBConnection() { 
    // try { 
    // Class.forName(DBDRIVER); 
    // } catch (ClassNotFoundException e) { 
    // e.printStackTrace(); 
    // } 
    // try { 
    // conn = DriverManager.getConnection(DBURL + "E:\\Java\\JavaDemo\\DBTest.mdb"); 
    // } catch (SQLException e) { 
    // e.printStackTrace(); 
    // } 
    // }  public static Connection getConnection() {  if (conn == null) { 
    try { 
    Class.forName(DBDRIVER); 
    conn = DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD); 
    return conn;  } catch (Exception e) { 
    e.printStackTrace();  }  } 
    return conn; 
    }  public static void main(String[] args) { 
    try { 
    Connection conn = getConnection(); 
    System.out.println(conn);
    System.out.println("==="); 
    } catch (Exception e) { 
    e.printStackTrace(); 

    } } 
      

  16.   

    你把我的代码拷去,把文件路径改下,我怀疑你U盘拔掉了。G是U盘吧?
    换个路径试试
      

  17.   

    今天碰到相同的问题最后发现是 access 文件版本过高.
    offer2000 才能正常访问2003或者跟高版本就会报错