记录一次Java远程操作Access

523 阅读2分钟

因公司业务需要使用Access数据库,多方查找资料后,记录一次远程操作Access数据库方法。

使用的工具

java JDK 1.6 32位;
Access 2016;
rmjJdbc包

工具安装

1.在window服务器下安装32位JDK 1.6,并配置系统环境变量。

2.安装RmiJdbc3.3,作为桥接驱动,需要32JDK1.6才可启动(或者1.7,我这里没有尝试,1.8版本启动会失败,64位可能失败,可自行尝试),同样配置环境变量,如下图:

image.png

3.创建测试数据库test.mdb

启动RmiJdbc服务

启动windows cmd,启动rmijdbc:

java -jar D:\jar\RmiJdbc3.3\RmiJdbc\dist\lib\RmiJdbc.jar

image.png 下图为启动失败:

image.png

启动失败一般是因为JDK版本过高,建议JDK降低至32位1.6或者1.7进行尝试。

tips:这里使用的是32位版本JDK,64位没有尝试,有兴趣可自行尝试~

设置Access数据源

通过 win + r 输入 odbcad32

image.png 此方式是64位ODBC数据源管理,我这里使用的是32位,可在C:\Windows\SysWOW64下找到32位ODBC数据源

image.png 双击打开即可

image.png 这时候已经是32位数据源了

这时候开始设置:

image.png

image.png 选择之前创建的mdb文件

image.png 保存即可。

Java如何连接

同样需要rmiJdbc3.3,本地调试可先手动将包导入idea

image.png

创建驱动程序连接Access

 
import java.io.UnsupportedEncodingException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
 
public class ConnectAccessDatabase {
	public static void main(String[] args) {
		try {
			Class.forName("org.objectweb.rmijdbc.Driver");
			String url = "jdbc:rmi://ip/jdbc:odbc:test jdbc:odbc:databaseName";//ip为Access所在服务器ip,test为刚刚创建的数据源名称
			Connection con = DriverManager.getConnection(url, "", "");//没有用户名和密码的时候直接为空
			Statement sta = con.createStatement();
			ResultSet rst = sta.executeQuery("select * from sutdent");//sutdent为access数据库中的一个表名
			if(rst.next()){
				System.out.println(rst.getString("name"));
				//解决乱码问题
//				System.out.println(new String(rst.getBytes("name"), "gbk"));
			}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} /*catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}*/
		
	}
}

部署到k8s遇到问题

1.本地调试完成后,可先将rmiJdbc打包到maven

2.部署到K8s之后,发现一直连接超时,经查看是K8s与Access所在的网络不通,这时可找运维进行协助(不要觉得是自己代码问题!)

友情提示

rmiJdbc包如有需要可在评论区说明,感觉各位没什么机会用到这个,就先不放链接了。