这是我的代码:
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。
答案 0 :(得分:3)
这是非常常见的错误。
原因是some other application is using your database
(最常见的是您在Microsoft Access中打开了数据库)。
关闭它并享受。
编辑:
这个答案是针对评论中提到的错误用户(无法打开注册表项'临时(易变))
答案 1 :(得分:0)
将此添加到您的代码中:
System.out.println ("Unable to connect to the database");
System.out.println ("Exception: " + e.getMessage());
然后你可以更深入地了解出了什么问题
答案 2 :(得分:0)
您的Driver=
名称缺少空格。你已将其定义为......
Driver={Microsoft Access Driver (*.mdb,*.accdb)};
......但应该是......
Driver={Microsoft Access Driver (*.mdb, *.accdb)};
你的连接字符串末尾也有一个迷路}
,但这似乎没有伤害任何东西。
答案 3 :(得分: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";