【问题标题】:Difficulty connecting to database using SQLserver jdbc使用 SQLserver jdbc 连接数据库时遇到困难
【发布时间】:2013-09-22 13:33:35
【问题描述】:

我正在尝试使用 sqljdbc4 连接到我的数据库,我对此很陌生,所以我遵循了几个教程,但它似乎仍然不起作用,当我尝试运行程序时,我得到了这个异常:

com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user ''.        ClientConnectionId:f181fd37-7e28-4392-ac86-02914c2090e1
at  com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216) 

这是我的代码:

    try {

        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

        Connection con = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=DBank;","","");

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
         } catch (SQLException e) {
            e.printStackTrace(); 
         }
    return null;

【问题讨论】:

    标签: java sql-server database jdbc


    【解决方案1】:

    您没有通过任何身份验证凭据。如果您想使用集成安全性(Windows 身份验证),则需要在连接 URL 中明确指定并且您需要加载此所需的本机库。

    请参阅 MSDN 上 Windows 上的 Connecting with Integrated Authentication On Windows

    这基本上归结为在java.library.path系统属性中包含包含(32位或64位)sqljdbc_auth.dll的文件夹(有关详细信息,请参阅链接)并将integratedSecurity=true添加到您的连接字符串:

    DriverManager.getConnection(
       "jdbc:sqlserver://localhost:1433;databaseName=DBank;integratedSecurity=true");
    

    【讨论】:

    • 非常感谢!!!我一直在寻找解决方案的时间,但不明白为什么它不起作用,现在正在工作。
    • 我在这个问题上搞砸了一段时间。我通过 Proxool 使用驱动程序并将“integratedSecurity”指定为属性,根据 MS 文档,它似乎应该可以工作。果然,移动到 URL 解决了这个问题。谢谢!
    【解决方案2】:

    您在使用 getConnection 方法连接到数据库时传递了空的用户名和密码:

    DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=DBank;","","");
    

    尝试提供 db 用户名和密码,例如:

    DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=DBank;","myusername","mypassword");
    

    【讨论】:

    • 我的数据库中没有配置密码和用户名,我已经删除了 ,"","" ,但我仍然遇到同样的异常
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-20
    • 2012-03-13
    相关资源
    最近更新 更多