0

这是我的代码:

public class ConnectDB {
Connection conn;
Scanner kb=new Scanner(System.in);
public String ID;
public ConnectDB()
{
try
     {
        Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");
        System.out.println ("Driver successfully loaded");
     }
         catch (ClassNotFoundException c)
        {
           System.out.println ("Unable to load database driver");
        }

  //connect to the database
     try
     {
    String filename = "PATPhase2DB.mdb";
    String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb,*.accdb)};DBQ=";
    database += filename.trim () + ";DriverID=22;READONLY=true}";
    conn = DriverManager.getConnection (database,"","");
    System.out.println ("Connection to database successfully established");

     }
     catch (Exception e)
     {
         System.out.println ("Unable to connect to the database");
     }
}

消息是:
驱动程序成功加载
无法连接到数据库
java.lang.NullPointerException

这在与我不同的计算机上工作,通过完全相同的代码连接到数据库。我也在运行 Windows 8。

4

4 回答 4

3

这是非常常见的错误。

原因是some other application is using your database(最常见的是您在 Microsoft Access 中打开了数据库)。

关闭它并享受。

编辑:
此答案适用于评论中提到的错误用户(无法打开注册表项'临时(易失性)

于 2014-05-18T03:44:25.823 回答
0

将此添加到您的代码中:

System.out.println ("Unable to connect to the database");
System.out.println ("Exception: " + e.getMessage());

然后您可以更深入地了解问题所在

于 2013-05-01T21:16:11.420 回答
0

你的Driver=名字少了一个空格。您已将其定义为...

Driver={Microsoft Access Driver (*.mdb,*.accdb)};

……不过应该……

Driver={Microsoft Access Driver (*.mdb, *.accdb)};

您的连接字符串的末尾也有一个流浪}者,但这似乎并没有造成任何伤害。

于 2013-05-02T14:21:07.633 回答
0

在这种情况下,您需要提及访问数据库文件的整个路径,并且扩展名 ( .mdb, *.accdb) 空格之间的 url 是强制性的,例如:

String database="C:/Users/GIRI/Desktop/fdsfkdsfj/abc.accdb";
String url="jdbc:odbc:Driver={Microsoft Access Driver (.mdb, *.accdb)};DBQ=" + database + ";DriverID=22;READONLY=true";
于 2016-03-06T15:15:19.630 回答