此驱动程序未配置为集成身份验证

时间:2015-09-12 08:05:26

标签: java sql-server servlets glassfish sqljdbc

尝试使用sqljdbc41 jdk 1.8将我的java Web应用程序与MS-SQL服务器连接起来。这是数据库连接代码 -

    Connection connection;
    String url = "jdbc:sqlserver://localhost:1433;databaseName=Lista;integratedSecurity=true";
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    connection = DriverManager.getConnection(url);

当我尝试将一些值插入数据库时​​,如 -

    PreparedStatement ps = connection.prepareStatement("INSERT INTO user_informations VALUES(?,?,?)");

    ps.setString(1, "value");
    ps.setString(2, "value");
    ps.setString(3, "value");

    ps.executeUpdate();

每次都会出现以下错误 -

  

com.microsoft.sqlserver.jdbc.SQLServerException:此驱动程序不是   已配置为集成身份验证

以下是我尝试过的一些信息 -

  • 我在路径变量中添加了sqljdbc41的路径。
  • 我在路径变量中添加了sqljdbc_auth.dll的路径。
  • 我已将sqljdbc41.jar添加到我的Nebeans项目库中。
  • 我已将sqljdbc_auth.dll添加到jdkjre下的bin文件夹中。
  • 我的jdk是程序文件文件夹下的64 bit而不是程序文件(x86)。
  • jdbc驱动程序文件夹也在程序文件目录中。
  • sql server和sql server浏览器服务也在运行。

修改

现在我体验了一件新事物 - 在我第一次部署项目后重启我的电脑后,它工作得很好但是当我对我的代码进行任何更改并重新运行项目时它不起作用!

2 个答案:

答案 0 :(得分:0)

对我来说问题是有两个java安装,其中一个是标准安装,它是64位,另一个包含在我的oracle jdeveoper安装中(它是应用程序使用的那个给出错误)而令人惊讶的是它是32位。 我只是将正确的dll放在我的应用程序使用的java安装中,一切顺利

答案 1 :(得分:0)

sqljdbc_auth.dll需要使用Windows身份验证或Kerberos身份验证。

Microsoft获取dll并通过以下方式安装:

  1. 放在应用程序库文件夹中
  2. 拖放到Java bin文件夹中(如果您有多个Java安装,请注意)
  3. 将库放在某个文件夹中,然后在命令行中添加路径:

    java -Djava.library.path=<library path>...
    

mssql-jdbc驱动程序和auth dll应为:

  • 在同一文件夹中(但不是必需的)
  • 都是同一版本
  • 对于同一体系结构(x86 / x64),JVM正在运行。

还要在下载页面上检查具有Java版本的jdbc兼容性列表。