gpt4 book ai didi

java - SQL Server JTDS 连接问题

转载 作者:行者123 更新时间:2023-12-02 07:27:58 24 4
gpt4 key购买 nike

这很奇怪,我正在连接到一个为 Windows 配置了集成身份验证的 SQL Server 2008 实例。我找到了一种通过在代码中执行此操作来绕过集成身份验证的方法:

Connection con = DriverManager.getConnection( "jdbc:jtds:sqlserver://mydbserver/myDbname;useNTLMv2=true;username=$jboss;password=1234;domain=MYDOMAIN", "$jboss", "1234");

因此,在上面对 jtds 驱动程序上的 name 进行了类之后,它就完美地工作了。但是,我需要将其作为连接字符串放入配置文件中,当我更改上述内容以使用 getConnection 上的方法调用时,无需显式发送用户名、密码参数,如下所示:

 Connection con = DriverManager.getConnection( "jdbc:jtds:sqlserver://mydbserver/myDbname;useNTLMv2=true;username=$jboss;password=1234;domain=MYDOMAIN");

我收到一个 Native SSPI 库未加载异常,因为它尝试使用 Windows 身份验证进行身份验证。因此,我找到 jts 发行版中的 dll,将 ntlmauth.dll 添加到我的 bin 和系统类路径中,然后出现不受信任的域登录异常,我知道我可以通过在域下执行“RUNAS.exe”来解决该异常,但这让我回到了必须使用我不想要的集成身份验证。

问题归结为,为什么我可以通过将用户名和密码作为 getConnection() 方法的参数传递来创建连接,而不会出现任何问题,但是当我不这样做时,它会强制集成身份验证。如果我自己在代码中创建连接,这不会是问题,但我需要一个连接字符串来放入我的属性文件中,并且不知道如何构造一个将调用 getConnection() 并提供用户名、密码的连接字符串作为参数。

我讨厌这些乏味的问题,但我却空手而归,任何意见都会有帮助。 - 邓肯

最佳答案

参数是user,不是username。这应该可以解决你的问题。所以尝试一下:

 Connection con = DriverManager.getConnection( "jdbc:jtds:sqlserver://mydbserver/myDbname;useNTLMv2=true;user=$jboss;password=1234;domain=MYDOMAIN");

关于java - SQL Server JTDS 连接问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13297351/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com