一、错误场景描述:

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,放置完成如图所示:

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

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐