0

我正在尝试使用带有 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 编码的新手,我已经尝试了为类似帖子提供的所有解决方案。

4

1 回答 1

-3

最终通过重新安装Windows操作系统自己找到了解决方案。

使用上面相同的代码和 sqljdbc4.jar & 下面的 VM 参数

-Djava.library.path=E:\sqljdbc_4.0\enu\auth\x86\

我能够成功连接。

于 2014-02-07T00:38:13.340 回答