Java(Jdk1.8)通过ODBC 连接数据库(以SQLServer为例)

由于JDK1.8移除了ODBC相关的部分,而将jdk1.8改为1.7也十分复杂(需要修改很多代码),因此可以采用以下的方案

一、配置ODBC数据源(Windows)

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

  2. 系统DNS中单击添加按钮
    在这里插入图片描述

  3. 选择SQL Server Native Client 10.0
    在这里插入图片描述

  4. 分别输入数据源名(数据库名)和IP地址
    在这里插入图片描述

  5. 输入连接数据库的用户名和密码
    在这里插入图片描述

  6. 单击下一步,到如下页面后,单击测试数据源
    在这里插入图片描述

  7. 出现如下提示则说明测试成功
    在这里插入图片描述

二、在Java8中使用JDBC-ODBC Bridge

需要的文件也可以从以下链接中获取:
链接:https://pan.baidu.com/s/1LywdcvzXypazELd0zkwBLg
提取码:r1s2

  1. 下载JDK 7 或者 JRE 7。(下载地址)
  2. JRE\lib目录找到rt.jar
  3. 直接解压或者重命名为rt.zip后解压。
  4. 复制sun\jdbcsun\security\action并保持文件夹的结构。应保留如下所示的文件夹结构:
 Sun --> Security --> Action
     --> JDBC

在这里插入图片描述

  1. 打开一个CMD窗口,在sun文件夹的父目录,运行如下命令:jar -cvf jdbc.jar sun
    这个命令会生成一个名为jdbc.jar的文件。

  2. jdbc.jar放到jdkjrelib目录下。
    PS: 如果不成功,请尝试放在jdkjrelibext目录下!目前我是windows环境的jdk放在前者可以,linux放在后者可以。

  3. 复制jdbcodbc.dll(下载地址)jdkjre\bin目录下。
    在这里插入图片描述
    注意:以上使用的jre都是指jdk中的jre目录
    在这里插入图片描述
    在这里插入图片描述

  4. 重启项目。

三、连接SQLServer

public static void main(String[] args) throws SQLException, ClassNotFoundException {
        Class<?> aClass = Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        // 其中alicia为数据源名 
        String url = "jdbc:odbc:alicia";
        // 其中sa为用户名,alicia为密码
        Connection connection = DriverManager.getConnection(url,"sa","alicia");
    }
    
    //装载数据库
    public MyOdbcConnection() throws Exception {
        Class<?> aClass = Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        System.out.println(aClass);
    }

    //建立数据库连接
    public Connection getConnection(String url, String username, String password) throws SQLException {
    	// 其中alicia为数据源名 
        String url = "jdbc:odbc:alicia";
        con = DriverManager.getConnection(url, username, password);
        return con;
    }

    //关闭数据库连接
    public void closeConnection(Connection con) {
        try {
            if (con != null) {
                con.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void closepreparedStatement(PreparedStatement prepstment) {
        try {
            if (prepstment != null) {
                prepstment.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void closeResultSet(ResultSet rs) {
        try {
            if (rs != null) {
                rs.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

参考文章

Removal of JDBC ODBC bridge in java 8

  • 1
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值