Eclipse下使用JDBC驱动程序连接SQL Server 2012数据库,报错:no sqljdbc_auth in java.library.path,没有为集成身份验证配置驱动程序

一、错误场景描述:

Eclipse4.7  java EE版;

SQL Server 2012;

JDK 1.8;

JDBC 驱动版本mssql-jdbc-6.4.0.jre8.jar

在Eclipse下使用JDBC驱动程序连接SQL Server 2012数据库,报错信息如下:

一月 25, 2022 8:50:58 下午 com.microsoft.sqlserver.jdbc.AuthenticationJNI <clinit>
警告: Failed to load the sqljdbc_auth.dll cause : no sqljdbc_auth in java.library.path
com.microsoft.sqlserver.jdbc.SQLServerException: 没有为集成身份验证配置驱动程序。 ClientConnectionId:ba1e1361-4e6a-4275-afeb-a14d61db9858
	

 

警告: Failed to load the sqljdbc_auth.dll cause : no sqljdbc_auth in java.library.path
com.microsoft.sqlserver.jdbc.SQLServerException: 没有为集成身份验证配置驱动程序

 测试连接类代码如下:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class SQLServerDBUtil {
	private static String DriverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
	private static String connUrl = "jdbc:sqlserver://localhost:1433;" + "DatabaseName=MyStudent;integratedSecurity=true;";
	private static Connection conn;
	private static Statement stmt;
	private static ResultSet rs;

	public static void main(String[] args) {
		try {
			Class.forName(DriverName);
			conn = DriverManager.getConnection(connUrl);
			String sqlStr = "SELECT [sid],[name],[gender],[departName],[collegeName] FROM [dbo].[Student],[dbo].[College],[dbo].[Department] WHERE Student.departmenId = Department.id AND Student.collegeId = College.collegeId";
			stmt = conn.createStatement();
			rs = stmt.executeQuery(sqlStr);
			while (rs.next()) {
				System.out.println("学号: " + rs.getString(1) + "  姓名: " + rs.getString(2) + "  性别: " + rs.getString(3)
						+ "  专业: " + rs.getString(4) + "  院系: " + rs.getString(5));

			}
		} catch (ClassNotFoundException | SQLException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}

	}

}

连接数据库,使用的账户:

1.使用Windows身份验证连接

 

2.使用sa账户连接

 

在SQL Server2012 数据库连接均正常

 结果依然报错:

Caused by: java.lang.UnsatisfiedLinkError: no sqljdbc_auth in java.library.path
	at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)
	at java.lang.Runtime.loadLibrary0(Runtime.java:871)
	at java.lang.System.loadLibrary(System.java:1122)
	at com.microsoft.sqlserver.jdbc.AuthenticationJNI.<clinit>(AuthenticationJNI.java:54)
	... 13 more

二、解决办法实测成功):

1.官方下载的驱动程序包中,在此路径下\sqljdbc_6.4\sqljdbc_6.4\chs\auth\x64找到sqljdbc_auth.dll文件,如图所示(根据需要选择X86 or X64):

 

将sqljdbc_auth.dll拷贝到JDK的安装路径bin目录下,本机器路径位于C:\Program Files\Java\jdk1.8.0_291\bin,放置完成如图所示:

 最后,运行测试程序,连接数据库成功!

 

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值