[英]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.