gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:31:31 26 4
gpt4 key购买 nike

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

log by the user in 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 的用户名和密码相同。

这是我的类(class)代码:

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();
}

}

}

最佳答案

正如 Mark Rotteveel 指出的那样,我试图使用 JDBC 连接到 LocalDB 实例,这似乎无法实现。 (引用:here)

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

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

使用此连接字符串、用户名和密码创建连接,并且成功。实例管道编号是通过

从 cmd 行中获取的
sqllocaldb i MSSQLLocalDB

关于java - JDBC 无法登录 LocalDB 实例,但在 SSMS 中我可以登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54266005/

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