我正在尝试使用带有IntegratedSecurity的JDBC sql server从JAVA代码连接到SQL Server 2008以使用Windows身份验证。
SQL身份验证在代码中运行良好,但是当我使用IntegratedSecurity进行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:\ Users&gt; java -version
java版“1.6.0_25”
Java(TM)SE运行时环境(版本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编码的新手,我已尝试过为类似帖子提供的所有解决方案。
答案 0 :(得分:-2)
最后通过重新安装Windows操作系统找到了解决方案。
使用与sqljdbc4.jar&amp;上面相同的代码。低于VM参数
-Djava.library.path = E:\ sqljdbc_4.0 \ ENU \ AUTH \ 86 \
我能够成功连接。