一、错误场景描述:
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,放置完成如图所示:
最后,运行测试程序,连接数据库成功!