我正在尝试使用带有 IntegratedSecurity 的 JDBC sql 服务器从 JAVA 代码连接到 SQL Server 2008 以使用 Windows 身份验证。
SQL 身份验证在代码中运行良好,但是当我使用 IntegratedSecurity for Windows 身份验证时,我遇到了 sql 驱动程序问题。我在下面提供了简短的场景。
Java 代码
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class Sqlselection
{
public static void main(String[] args)
{
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
System.out.println("This programe runs on "+ System.getProperty("java.version"));
String url="jdbc:sqlserver://*****\\*****;integratedSecurity=true";
//Masked Server name & DB name
Connection con = DriverManager.getConnection(url);
Statement s1 = con.createStatement();
ResultSet rs = s1.executeQuery("SELECT count(1) myrecords FROM dbo.mytable");
String[] result = new String[20];
if(rs!=null){
while (rs.next()){
for(int i = 0; i <result.length ;i++)
{
for(int j = 0; j <result.length;j++)
{
result[j]=rs.getString(i);
System.out.println(result[j]);
}
}
}
}
} catch (Exception e)
{
e.printStackTrace();
}
}
}
运行代码时出错
警告:无法加载 sqljdbc_auth.dll 原因:E:\POC\OMSChecker\sqljdbc_auth.dll:无法在 IA 32 位平台上加载 AMD 64 位 .dll * com.microsoft.sqlserver.jdbc.SQLServerException: * 此驱动程序未配置为集成身份验证。ClientConnectionId:27af9d19-d144-47be-b9cf-bf646ed9bb3f
问题根源
sqljdbc_auth.dll 与当前平台不兼容。
系统属性
C:\用户>java -版本
java版本“1.6.0_25”
Java(TM) SE 运行时环境 (build 1.6.0_25-b06)
Java HotSpot(TM) 64 位服务器 VM(内部版本 20.0-b11,混合模式)
Eclipse 属性
启动器: win32.x86_64_1.1.200.v20120913-144807
使用的dll: E:\sqljdbc_2.0.1803.100_enu.exe\sqljdbc_2.0\enu\auth\x64\sqljdbc_auth.dll
添加了外部 Jar: sqljdbc4.jar
本机库位置: “E:\sqljdbc_2.0.1803.100_enu.exe\sqljdbc_2.0\enu\auth\x64\”
笔记
有人可以帮我解决这个问题。我是 JAVA 编码的新手,我已经尝试了为类似帖子提供的所有解决方案。