日期:2014-05-16  浏览次数:20406 次

64位win7 jdbc连接access总结


用jdbc连接mdb文件,小小的问题纠结了我好久,查了诸多资料才弄好。。所以必须记下来

系统: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; 
	}