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

标签 java sql-server servlets glassfish sqljdbc

尝试使用 jdk 1.8sqljdbc41 将我的 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: This driver is not configured for integrated authentication

这里有一些关于我已经尝试过的信息-

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

编辑

现在我遇到了一件新事——在我第一次部署项目时重新启动我的电脑后它工作得很好但是当我对我的代码进行任何更改并重新运行该项目时它不工作!

最佳答案

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 正在运行。

还要检查下载页面上 jdbc 与 java 版本的兼容性矩阵。

关于java - 此驱动程序未配置集成身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32536608/

相关文章:

java - 将值放入输入字段中,即来自 servlet 的 html 表单中的文本框中

Java 处理大量具体工厂

sql-server - 将 SQL 列转换为行

java - 我能否在显示之前获得正确的 JComponent 大小?

SQL:根据子字符串连接表

sql - 数据库属性 "Mirroring"页

java - 如何从 jsp/servlet 发送电子邮件?

jsp - 将一组单选按钮的值传递给 servlet

java - 如何将 RDF 转换为字符串

java - jsp中 'class'和 'type'属性之间的差异