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 -version、java、javac 几个命令,出现版本信息,说明环境变量配置成功;
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();//关闭链接
}
}
}


浙公网安备 33010602011771号