5

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

    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到和下的 bin 文件夹jdkjre
  • jdk64 bit程序文件文件夹下,不在程序文件(x86)中。
  • jdbc驱动文件夹也在程序文件目录下。
  • sql server 和 sql server 浏览器服务也在运行。

编辑

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

4

3 回答 3

4

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 版本的兼容性矩阵。

于 2019-12-14T00:23:42.757 回答
3

我解决了我的问题!

我得到的错误(在我上面的问题中描述)是因为glassfish服务器没有任何sqljdbc42.jar文件访问权限。所以我已将sqljdbc42.jar文件放入我的glassfish服务器中的这个位置 -

glassfish-4.1\glassfish\domains\domain1\lib

它现在运行良好。

谢谢大家!

于 2015-09-14T07:06:39.767 回答
0

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

于 2017-08-02T07:24:37.407 回答