Exception handling 与java连接时发生SQLException错误

Exception handling 与java连接时发生SQLException错误,exception-handling,netbeans-8,sql-server-2017,Exception Handling,Netbeans 8,Sql Server 2017,我一直面临一个简单的sql连接错误,我已经厌倦了修复它。我先后安装了sql server 2014和sql server 2017,为防火墙添加了规则,甚至关闭了防火墙。服务多次重新启动。 转到configuration manager,启用了所有功能,添加了所有需要的jar,完成了清理和构建,在google上完成了关于这个问题的所有搜索,但同样的问题还是一再出现。使用的系统是 -视窗10。 -Sql server management studio 2017。 -Netbean 8.1 代码:

我一直面临一个简单的sql连接错误,我已经厌倦了修复它。我先后安装了sql server 2014和sql server 2017,为防火墙添加了规则,甚至关闭了防火墙。服务多次重新启动。 转到configuration manager,启用了所有功能,添加了所有需要的jar,完成了清理和构建,在google上完成了关于这个问题的所有搜索,但同样的问题还是一再出现。使用的系统是 -视窗10。 -Sql server management studio 2017。 -Netbean 8.1

代码:-

    import java.sql.*;
    public class DbConnect  { 
    public static void main(String[] args) throws SQLException,ClassNotFoundException {
    String url = "jdbc:sqlserver://localhost:1433;databaseName=productlist;user=db2017;password=db2017";

//commented :-String url = "jdbc:sqlserver://DESKTOP-7CI6DU0\\NIT2017:1433;databaseName=productlist;user=db2017;password=db2017";

                Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
                Connection conn = DriverManager.getConnection(url);
                System.out.println("test");
                Statement sta = conn.createStatement();
                String Sql = "select * from productlist";
                ResultSet rs = sta.executeQuery(Sql);
                while (rs.next()) {
                System.out.println(rs.getString("CatName"));                 
        }  }  }
下面是异常错误再次出现,经过这么多的故障排除

Exception in thread "main" com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host localhost, port 1433 has failed. Error: "Connection refused: connect. Verify the connection properties, check that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port, and that no firewall is blocking TCP connections to the port.".
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:171)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1033)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:817)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:700)
    at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:842)
    at java.sql.DriverManager.getConnection(DriverManager.java:571)
    at java.sql.DriverManager.getConnection(DriverManager.java:233)
    at DbConnect.main(DbConnect.java:11)
C:\Users\Nitish\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1

在放弃之前,请检查此处…

您注释掉的连接字符串表明您正在连接到一个命名实例。默认SQL Server实例(未命名)侦听端口1433,除非另有配置。命名实例使用的动态端口不是1433,除非另有配置。每台机器只能有一个默认实例,每个SQL实例必须在不同的端口上侦听

您可以使用或通过查看SQL Server错误日志来标识SQL实例正在侦听的端口。错误日志将包括SQL Server正在侦听的每个接口和端口的消息。该消息类似于“服务器正在侦听['any'1433]”。可以使用SSCM更改端口,并在重新启动SQL服务后生效

要测试端口连接性,可以使用
TELNET

TELNET YourServer 1433
如果连接成功,您将看到并清空窗口,否则显示并返回错误

如果未安装
TELNET
,则可以从命令提示符窗口使用此Powershell命令测试端口连接:

powershell -Command echo ((new-object Net.Sockets.TcpClient).Client.Connect('YourServer', 1433)) 'success'
成功连接后,您将看到成功消息,否则将出现套接字异常


请注意,动态端口是在安装期间分配的,实例将在每次启动时尝试使用相同的端口。但是,请注意,如果该端口在启动时不可用,则端口号可能会更改。可以使用SSCM配置静态端口(包括端口1433),以避免命名实例的端口号更改。

对于初学者,请尝试
TELNET 1433
。如果Windows上未安装telnet,则可以运行
powershell-Command echo((新对象Net.Sockets.TcpClient).Client.Connect('localhost',1433))'success'
。命名SQL实例通常在1433以外的端口上侦听。请参阅。我运行了powershell命令,下面是错误。它不起作用。使用“2”参数调用“Connect”时出现异常:“无法建立连接,因为目标计算机主动拒绝了127.0.0.1:1433”,行:1 char:1+echo((新对象Net.Sockets.TcpClient).Client.Connect('localhost',…+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~,MethodInvocationException+FullyQualifiedErrorId:SocketException这意味着没有进程正在侦听1433。请检查SQL Server错误日志以确定服务实际侦听的端口号。消息类似于“服务器正在侦听['any'1433]”你好,丹,非常感谢,终于成功了,我检查了端口号,它是:53232,我所需要做的就是更改我的端口号。只是一个问题:为什么它在1433上不工作?它是sql server的默认端口号。。