当前位置: 首页 > 知识库问答 >
问题:

JDBC无法登录LocalDB实例,但在SSMS中我可以登录

赫连方伟
2023-03-14

我试图通过本地主机上的JDBC连接到我的数据库。通过windows身份验证连接没有问题,但是我想通过SQL身份验证连接。因此,我在数据库中创建了一个登录名和与该登录名对应的用户。我可以正常登录SSMS:

我的 JDBC 连接字符串: jdbc:sqlserver://localhost:1433;databaseName=TestBazyDanych;user=doszke;password=doszke123

抛出异常:

com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user 'doszke'. ClientConnectionId:b7005fe3-904d-40c5-a89e-af0cb61250d6
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:254)
    at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:258)
    at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:104)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:4772)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:3581)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:81)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:3541)
    at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7240)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2869)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:2395)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:2042)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1889)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:1120)
    at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:700)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:251)
    at main.Main.main(Main.java:38)

用户名和密码与登录SSMS时使用的相同。

这里我的类代码:

package main;

import java.sql.*;

public class Main {


    private static ResultSet selectStan(Connection connection) throws SQLException {
        String sql_stmt = "SELECT * FROM STAN;";
        Statement statement = connection.createStatement();
        ResultSet result = statement.executeQuery(sql_stmt);
        System.out.println("Select executed");
        return result;
    }


    public static void main(String[] args) {



        try {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }


        String userName = "doszke";
        String password = "doszke123";

        String url = "jdbc:sqlserver://localhost:1433;databaseName=TestBazyDanych;user=doszke;password=doszke123";


        try (Connection con = DriverManager.getConnection(url)) {

            if(con != null){
                System.out.println("connected");
            } else {
                System.out.println("unable to connect");
            }

        }
        catch (SQLException e) {
            e.printStackTrace();
        }

    }

}

共有2个答案

梁季
2023-03-14

有几件事需要检查:

  1. 您是否在数据库和 SSMS 下创建了 doszke 用户?
  2. 您是否能够在SSMS中使用doszke/doszke123凭据登录?
  3. 请检查入站和出站防火墙中的 1433 端口是否打开。
  4. 尝试在本地主机 1433 上远程登录。如果失败,请更改以下设置:转到配置工具 -
常元章
2023-03-14

正如Mark Rotteveel指出的那样,我试图使用JDBC连接到LocalDB实例,这似乎是不可行的。(参考:这里)

但是,我安装了jTDS并添加到我的类路径中,将我的连接字符串改为

jdbc:jtds:sqlserver://./TestBazyDanych;instance=LOCALDB#EB7165FD;namedPipe=true 

使用此连接字符串,用户名和密码创建连接,并且它起作用了。实例管道编号取自 cmd 行,通过

sqllocaldb i MSSQLLocalDB
 类似资料:
  • 我尝试使用这个简单的代码登录,但在我点击登录按钮后,else选项“无效用户名或密码!”总是出现,即使用户名和密码是匹配的 控制器:

  • 我正在使用selenium在我的C#应用程序中自动登录。然而,我尝试登录的页面具有某种验证码或机器人检测技术,即使这些凭据是正确的,也会导致“不正确的凭据”。手动登录使用相同的凭据。 我尝试过的事情: 为chromeOptions设置用户代理和用户数据目录。 添加了排除参数的启用自动化禁用的信息栏的Chrome是由自动化软件控制 在无头模式下尝试了Chrome、FireFox和IE。 在登录代码中

  • 每当我试图打开 致命错误:未捕获错误:调用C:\xampp\htdocs\wordpress\wp includes\wp db中未定义的函数mysql\u connect()。php:1668堆栈跟踪:#0 C:\xampp\htdocs\wordpress\wp includes\wp db。php(632):wpdb- 致命错误:未捕获错误:调用C:\xampp\htdocs\wordpre

  • 问题内容: 我无法使用JavaFX WebView登录到Google。当我单击“下一步”按钮时,该页面无法加载。 在不同网站上的其他登录也可以正常工作。 这是您可以运行的示例: 屏幕截图在这里 问题答案: 精简版: 在加载页面之前,将以下行添加到您的main方法中: 长版: 我的第一个直觉是JavaScript无法正常工作,但是我测试了伪邮件并正确地得到了错误: 找不到您的Google帐户 因此,

  • 我无法在JavaFX WebView中登录谷歌。当我单击“下一步”按钮时,页面未加载。 不同网站上的其他登录也可以。 这是一个您可以运行的示例: 此处截图

  • 因此,我已经阅读了所有关于创建会话和自动登录的jsoup文章。阅读有关cookie问题的问题。因此,使用所有这些示例,我创建了一些JAVA代码来登录到特定站点。但每次我登录或尝试登录时,我都会被重定向回登录页面。 使用loginForm我获得所需的cookie 然后我使用Forms操作URL发布我的登录信息 然后我应该登录,但它是重新定向到登录。我可以在loginDoc对象解析中看到这一点。 问题