系统:64位win7 java:64位
若想odbc数据源方式连接,则ODBC必须是64位的,因为你java已经是64的了,使用C:\Windows\System32\odbcad32.exe的32位ODBC纵然能添加消失的mdb等数据源,添加后也是不能用的。
所以想连接上mdb的话,就写了原来的office安装64的吧(顺便尝了下office2013的鲜,那货快多了……)
然后是连接。
使用jdbcodbc桥连接:
String urlAccess="jdbc:odbc:XXX"; //XXX为数据源名字
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn=DriverManager.getConnection(urlAccess,"","");
直接jdbc连接mdb文件:
String strConnect ="jdbc:odbc:DRIVER=Microsoft Access Driver (*.mdb, *.accdb);DBQ=E:\\java\\eclipse\\workspace\\Identify\\AreaCode.mdb";
Connection conn=DriverManager.getConnection(strConnect,"","");
直接使用jdbc连接mdb文件时最方便的,不用配置odbc,但mdb取绝对路径也是一个问题。解决方案如下:
1.使用./表示mdb位于根目录以下
String strConnect ="jdbc:odbc:DRIVER=Microsoft Access Driver (*.mdb, *.accdb);DBQ=./AreaCode.mdb";
2.添加getPah()方法获得classes路径
String strConnect ="jdbc:odbc:DRIVER=Microsoft Access Driver (*.mdb, *.accdb);DBQ="+getPath()+"AreaCode.mdb";
private static String getPath(){
String path;
path = Identify.class.getResource("").getPath();// 获得classes的类路径
path = path.substring(1);//mdb位于.class同级目录,可自行截取字段调整
return path;
}