JDK8使用ODBC连接Access数据库环境移植和代码实现

一、前言

前段时间项目中使用到Access数据库,无奈发现JDK8移除了ODBC相关的部分,查阅资料后笔者使用了第三方jar包ucanaccess来连接,使用后发现有几个弊端。

        1、建立连接时间短则十几秒,慢则一分钟左右。

        2、Access数据库一旦有插入动作,ucanacess就得重新建立连接(等待十几秒)。

        3、程序内存奇高,一个只有十几M的程序运行内存居然2G多(mdb文件110MB)。

最终抛弃使用ucanaccess连接方式,通过移植使JDK8支持ODBC连接。

二、JDK8使用ODBC连接的环境准备

1、资料:环境依赖文件

2、使JDK8支持ODBC的操作步骤:

        笔者的jdk装在D盘Java目录下

        JdbcOdbc.dll
         放在 D:\Java\jre1.8.0_261\bin  目录下

        JdbcOdbc.dll
         放在 D:\Java\jdk1.8.0_261\jre\bin   目录下  

        jdbc.jar  放在 D:\Java\jdk1.8.0_261\jre\lib\ext        目录下 
        jdbc.jar  放在 D:\Java\jre1.8.0_261\lib\ext             目录下 

三、建立连接代码工具类

package utils;

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



/**
 * JDBC数据库操作工具类 简化数据库操作
 *
 */
public class JDBCUtil {
	private static String AccessDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
	private static String AccessPWD = "";

	public JDBCUtil() {
		// TODO Auto-generated constructor stub
	}


	/**
	 * 获取Access数据库连接
	 * @return
	 */
	public static Connection getAccessCon() {
		Connection con = null;
		try {
			Class.forName(AccessDriver);
			 Properties prop = new Properties();
	            prop.put("charSet", "gbk");//防止中文乱码
	            prop.put("user", "");
	            prop.put("password", AccessPWD);
	            String url2 = "jdbc:odbc:CY_ydMIS";
			con =DriverManager.getConnection(url2, prop);
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		return con;
	}

	public static void close(Statement stmt, Connection conn) {
		if (stmt != null) {
			try {
				stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

		if (conn != null) {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

	public static void close(ResultSet rs, PreparedStatement pstmt, Connection conn) {

		if (rs != null) {
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

		if (pstmt != null) {
			try {
				pstmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

		if (conn != null) {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
	public static void close(ResultSet rs) {
		if (rs != null) {
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

	}
	public static void close(ResultSet rs, Statement stmt, Connection conn) {

		if (rs != null) {
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

		if (stmt != null) {
			try {
				stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

		if (conn != null) {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
}

四、配置ODBC数据源(Win10)

  1. 打开ODBC数据源设置(这里注意根据数据源选择对应的设置),选错会导致无法连接到数据库,我选择的是64位的。(如果不确定也可以先选择一种试一下,不成功的话换另一种)
    在这里插入图片描述

  2. 系统DNS中单击添加按钮

 3.选择access驱动

 

4.填写连接信息,注意数据源名要和连接代码对应上

 

 五、环境准备完成,可以开始写业务代码了

public Map<String, String> getCancelData(String ReceiptNO) {
		PreparedStatement pstm = null;
		Connection conn = null;
		ResultSet resultSet=null;
		Map<String,String> dataMap=new HashMap<>();
		String Sql="SELECT * FROM `YBAccounts` WHERE `ReceiptNO`=?";
		try {
			conn=JDBCUtil.getAccessCon();
			pstm=conn.prepareStatement(Sql);
			pstm.setString(1, ReceiptNO);
			resultSet=pstm.executeQuery();
			if(resultSet.next()) {
				dataMap.put("setl_id", resultSet.getString(2));
				dataMap.put("mdtrt_id", resultSet.getString(3));
				dataMap.put("psn_no", resultSet.getString(4));
			}
			return dataMap;
		} catch (SQLException e) {
			// TODO: handle exception
			e.printStackTrace();
			return null;
		} finally {
			JDBCUtil.close(resultSet,pstm,conn);
		}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
要在 IDEA 中使用 JDK 17 连接 SQL Server 数据库,需要进行以下步骤: 1. 首先,需要在项目的 `pom.xml` 文件中添加 Microsoft JDBC 驱动依赖。可以在 Microsoft 的官网上下载最新版的 Microsoft JDBC 驱动,然后在 `pom.xml` 文件中添加以下依赖: ```xml <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>mssql-jdbc</artifactId> <version>9.4.0.jre17-preview</version> </dependency> ``` 2. 在代码使用 JDBC 连接数据库。例如,如果你要连接 SQL Server 数据库,可以使用以下代码: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class Main { public static void main(String[] args) throws SQLException { String url = "jdbc:sqlserver://localhost:1433;databaseName=mydatabase"; String user = "sa"; String password = "123456"; Connection connection = DriverManager.getConnection(url, user, password); // 使用 connection 进行数据库操作 } } ``` 其中,`url` 是数据库连接地址,`user` 是数据库用户名,`password` 是数据库密码。 注意,SQL Server 的默认连接端口为 1433。 3. 在 IDEA 中配置 JDK 17 环境。在菜单栏中选择 `File -> Project Structure`,在弹出的窗口中选择 `SDKs`,点击 `+` 号添加 JDK 17 的安装路径。 4. 在 IDEA 中配置数据库连接。在菜单栏中选择 `View -> Tool Windows -> Database`,在弹出的窗口中点击 `+` 号添加数据库连接,选择数据库类型为 Microsoft SQL Server,填写连接信息,测试连接是否成功。 希望这些步骤能够帮助你在 IDEA 中使用 JDK 17 连接 SQL Server 数据库
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_40986463

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值