尝试使用 jdk 1.8
的 sqljdbc41
将我的 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
添加到jdk
和jre
下的 bin 文件夹中。 - 我的
jdk
是64 位
,在程序文件文件夹下,而不是在程序文件 (x86) 中。 - jdbc驱动文件夹也在程序文件目录下。
- sql server 和 sql server 浏览器服务也在运行。
编辑
现在我遇到了一件新事——在我第一次部署项目时重新启动我的电脑后它工作得很好但是当我对我的代码进行任何更改并重新运行该项目时它不工作!
最佳答案
sqljdbc_auth.dll
需要使用windows认证或Kerberos认证。
从Microsoft获取dll并通过以下方式安装:
- 放在应用程序库文件夹上
- 拖放到 java bin 文件夹(如果您安装了多个 java,请注意)
将库放在某个文件夹中,然后在命令行中添加路径:
java -Djava.library.path=<library path>...
mssql-jdbc 驱动程序和 auth dll 应该是:
- 在同一个文件夹(但不是强制性的)
- 都来自同一个版本
- 对于相同的架构 (x86/x64),JVM 正在运行。
还要检查下载页面上 jdbc 与 java 版本的兼容性矩阵。
关于java - 此驱动程序未配置集成身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32536608/