Java JDBC 连接 Integrated Security 只能在我的 Eclipse 中工作

Posted

技术标签:

【中文标题】Java JDBC 连接 Integrated Security 只能在我的 Eclipse 中工作【英文标题】:Java JDBC connection Integrated Security work only from my Eclipse 【发布时间】:2013-01-22 10:01:41 【问题描述】:

当我在 Eclipse 中打开 jdbc 连接时 - 它工作正常。

但是当我创建可执行 jar 文件并运行它时 - 我遇到了 Integrated Security=true 的问题。

或者可能不仅具有集成安全性...

【问题讨论】:

你能显示任何异常或一些代码吗? 下载最新版本的sqlserver db jar。我听说旧版本没有处理集成安全性! 主要问题:我的程序在 Eclipse 下工作,但是当我从命令行运行它时,它不能使用 jdbc 驱动程序 【参考方案1】:

我假设您正在谈论连接到 Microsoft SQL Server。为了能够使用集成安全性,您需要在java.library.path 上添加sqljdbc_auth.dll,如http://msdn.microsoft.com/en-us/library/ms378428.aspx#Connectingintegrated 中所述:

JDBC 驱动程序通过integratedSecurity 连接字符串属性支持在Windows 操作系统上使用Type 2 集成身份验证。要使用集成身份验证,请复制 sqljdbc_auth.dll 将文件复制到安装 JDBC 驱动程序的计算机上的 Windows 系统路径上的目录中。

sqljdbc_auth.dll 文件安装在以下位置:

<installation directory>\sqljdbc_<version>\<language>\auth\

[...]

您也可以设置 java.libary.path 系统属性来指定sqljdbc_auth.dll 的目录。例如,如果 JDBC 驱动程序安装在默认目录中,您可以在 Java 应用程序启动时使用以下虚拟机 (VM) 参数指定 DLL 的位置:

-Djava.library.path=C:\Microsoft JDBC Driver 4.0 for SQL Server\sqljdbc_<version>\enu\auth\x86

请注意,您需要根据 java VM 的位数使用正确的 DLL(因此对于 32 位,使用来自 x86 的那个,对于 64 位,使用来自 x64 的那个)。

【讨论】:

你是对的——它是关于授权的。现在我尝试使用你的答案。 首先:我没有这样的目录:C:\Microsoft JDBC Driver 4.0 for SQL Server\sqljdbc_\enu\auth\x86 我尝试运行:java -D java.library.path=D:\install\sqljdbc_4.0\enu\auth\x64 但它让我出错 具体一点:什么错误? (-Djava.library.path 之间也不应该有空格) 我生成可运行文件的 ant xml? mb 它可以帮助理解问题:

以上是关于Java JDBC 连接 Integrated Security 只能在我的 Eclipse 中工作的主要内容,如果未能解决你的问题,请参考以下文章

JDBC(Java数据库连接)

JAVA JDBC 数据库连接池

JAVA通过JDBC连接Oracle数据库详解转载

Java -- JDBC 学习--数据库连接池

JDBC连接数据库

JDBC连接数据库BaseDao类