繁体   English   中英

无法连接到MS Access数据库

[英]Unable to connect to MS Access Database

这是我的代码:

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。

这是非常常见的错误。

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

关闭它并享受。

编辑:
此答案是针对注释中提到的错误用户的( 无法打开注册表项'temporary(volatile)

将此添加到您的代码:

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

然后您可以更深入地了解出了什么问题

您的Driver=名称缺少空格。 您已将其定义为...

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

...但应该是...

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

在连接字符串的末尾也有一个迷离} ,但这似乎没有任何伤害。

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

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";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM