java Rmijdbc远程连接其他电脑上的access数据库

例如A电脑要连接B电脑上的access数据库,

在B电脑上要装有java环境,jdk版本小于1.8,因为jdk1.8以后取消JdbcOdbcDriver,

在 "系统变量" 中设置 3 项属性,JAVA_HOME、PATH、CLASSPATH(大小写无所谓),若已存在则点击"编辑",不存在则点击"新建"。

注意:如果使用 1.5 以上版本的 JDK,不用设置 CLASSPATH 环境变量,也可以正常编译和运行 Java 程序。

变量设置参数如下:

  • 变量名:JAVA_HOME
  • 变量值:C:\ProgramFiles\Java\jdk1.7.0_80      // 要根据自己的实际路径配置
  • 变量名:CLASSPATH
  • 变量值:C:\ProgramFiles\rmijdbc\rmijdbc-3.3.jar         
  • 变量名:Path

  • 变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

JAVA_HOME 设置

 

PATH设置

 

注意:在 Windows10 中,Path 变量里是分条显示的,我们需要将 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 分开添加,否则无法识别:

%JAVA_HOME%\bin;
%JAVA_HOME%\jre\bin;

更多内容可参考:Windows 10 配置Java 环境变量

CLASSPATH 设置

这是 Java 的环境配置,配置完成后,你可以启动 Eclipse 来编写代码,它会自动完成java环境的配置。

测试JDK是否安装成功

1、"开始"->"运行",键入"cmd";

2、键入命令: java -versionjavajavac 几个命令,出现版本信息,说明环境变量配置成功;

 

access数据库后缀为mdb。

在B电脑上设置odbc,odbc在控制面板中,系统和安全,管理工具,数据源(ODBC) ,打开面板后选择系统DSN,点击添加

选择这个类型的驱动程序,点击完成

 

 

然后打开 RmiJdbc jar文件 。

在控制台中运行

java org.objectweb.rmijdbc.RJJdbcServer

 

 项目中导入Rmijdbc包

 

 方法一:(未测试)

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
<compilerArguments>
<extdirs>${project.basedir}/lib</extdirs>
</compilerArguments>
</configuration>
</plugin>

  方法二:(测试)

 <dependency>
<groupId>org.objectyweb</groupId>
<artifactId>rmijdbc</artifactId>
<version>3.3</version>
<systemPath>${project.basedir}/lib/rmijdbc-3.3.jar</systemPath>
<scope>system</scope>
</dependency>

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Properties;

public class DBConnection {
static Connection connect = null;
static PreparedStatement stmt = null;
static ResultSet rs = null;
/**
* 该方法用来连接数据库
* @param db:数据源名称
* */
private DBConnection(String db){
try{
//Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//注册驱动
Class.forName("org.objectweb.rmijdbc.Driver").newInstance();//注册驱动
//Access中的数据库默认编码为GBK,本地项目为UTF-8,若不转码会出现乱码
Properties p = new Properties();
p.put("charSet", "GBK");
//connect = DriverManager.getConnection("jdbc:odbc:"+db,p);
connect = DriverManager.getConnection("jdbc:rmi://192.168.2.104/jdbc:odbc:"+db,p);
}catch(Exception e){
e.printStackTrace();
}
}

/**
* 该方法用来执行SQL并返回结果集
* */
public static ResultSet selectQuery(String db,String sql){
try{
stmt = getConnect(db).prepareStatement(sql);
rs = stmt.executeQuery();//执行SQL
}catch(Exception e){
e.printStackTrace();
}
return rs;
}

public static Connection getConnect(String db){
DBConnection conn = new DBConnection(db);
return connect;
}

/**
* 该方法用来关闭连接
* */
public static void closeConn() {
try {
rs.close();
stmt.close();
connect.close();
} catch (Exception e) {
e.printStackTrace();
}
}

/**
* 测试
* */
public static void main(String[] args){
try{
DBConnection connnect = new DBConnection("L11L12");
if(connect!=null){
System.out.println(connect+"\n连接成功");
}else{
System.out.println("连接失败");
}
rs= selectQuery("L11L12","SELECT top 1 * FROM L11料道表格 ORDER BY ID DESC");
if(rs!=null){
while(rs.next()){
System.out.print(rs.getString(1)+"\t");
System.out.print(rs.getString(2)+"\t");

System.out.println();
}
}
rs= selectQuery("L11L12","SELECT top 1 * FROM L12料道表格 ORDER BY ID DESC");
if(rs!=null){
while(rs.next()){
System.out.print(rs.getString(1)+"\t");
System.out.print(rs.getString(2)+"\t");

}
}
}catch(Exception e){
e.printStackTrace();
}finally{
closeConn();//关闭链接
}
}
}
posted @ 2021-08-14 21:30  yxb0429  阅读(1128)  评论(0)    收藏  举报