由于JDK1.8移除了ODBC相关的部分,而将jdk1.8改为1.7也十分复杂(需要修改很多代码),因此可以采用以下的方案
一、配置ODBC数据源(Windows)
打开ODBC数据源设置(这里注意根据数据源选择对应的设置),选错会导致无法连接到数据库,我选择的是64位的。(如果不确定也可以先选择一种试一下,不成功的话换另一种)
在系统DNS
中单击添加
按钮
选择SQL Server Native Client 10.0
分别输入数据源名(数据库名)和IP地址
输入连接数据库的用户名和密码
单击下一步,到如下页面后,单击测试数据源
出现如下提示则说明测试成功
二、在Java8中使用JDBC-ODBC Bridge
下载JDK 7 或者 JRE 7。(下载地址)在需要的文件也可以从以下链接中获取:
链接:/s/1LywdcvzXypazELd0zkwBLg
提取码:r1s2
JRE\lib
目录找到rt.jar
。直接解压或者重命名为rt.zip
后解压。复制sun\jdbc
和sun\security\action
并保持文件夹的结构。应保留如下所示的文件夹结构:Sun --> Security --> Action--> JDBC
打开一个CMD窗口,在sun文件夹的父目录,运行如下命令:jar -cvf jdbc.jar sun
这个命令会生成一个名为jdbc.jar
的文件。
将jdbc.jar
放到jdk
的jre
的lib
目录下。
PS: 如果不成功,请尝试放在jdk
的jre
的lib
的ext
目录下!目前我是windows
环境的jdk
放在前者可以,linux
放在后者可以。
复制jdbcodbc.dll
(下载地址)到jdk
的jre\bin
目录下。
注意:以上使用的jre
都是指jdk
中的jre
目录
重启项目。
三、连接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