JDBC连接用于SQLServer的Url表达R2

Anu*_*Anu 4 java database jdbc sql-server-2008-r2

我写下了与sql server express r2连接的以下行:

Connection con = DriverManager.getConnection("jdbc:sqlserver:// localhost/SQLEXPRESS; databaseName = abc","sa","password");

它给出了异常:com.microsoft.sqlserver.jdbc.SQLServerException:与主机localhost/SQLEXPRESS,端口1433的TCP/IP连接失败.错误:"null.验证连接属性,检查主机上是否正在运行SQL Server实例并接受端口上的TCP/IP连接,并且没有防火墙阻止与端口的TCP连接."

我按照这条线来解决异常:

SQL Server Express的TCP/IP默认情况下,SQL Server Express的TCP/IP已禁用,因此JDBC无法连接到它,您可能会收到以下异常...

网络错误IOException:连接被拒绝:connect启用TCP/IP

要启用TCP/IP,请启动SQL Server配置管理器.

展开SQL Server 2005网络配置节点.在右侧窗格中,选择SQLEXPRESS的协议.右侧窗格现在应显示"协议"和"状态"列.从TCP/IP上下文菜单中选择"启用".查找或配置TCP/IP端口

启用TCP/IP后,您必须找出要使用的端口号.SQL Server Express每次启动时都会动态分配端口,因此要查找或配置端口号,请继续使用SQL Server配置管理器...

从TCP/IP上下文菜单中选择"属性".应打开"TCP/IP属性"对话框.选择"IP地址"选项卡.在IPAll节点中... TCP动态端口字段显示当前使用的端口号.如果将该字段设置为空白,则SQL Server Express在重新启动时不应自动选择其他端口.在"TCP端口"字段中设置所需的端口号.按"确定"应用设置并关闭对话框.

之后也连接给出了同样的例外.

Mac*_*ver 7

尝试运行一些Java代码来测试它.将{computer-name}\SQLEXPRESS替换为您在SQL Server Management Studio的根节点中看到的域.安装SQL Express时,您可以选择将"SQLEXPRESS"的名称更改为自定义名称,因此也可能不同.要获取端口号,请转到Windows开始菜单> SQL Server 2008 R2>配置工具> SQL Server配置管理器>展开"SQL Server网络配置">单击"SQLEXPRESS的协议">右键单击"TCP/IP",然后选择"属性". >在Windows XP中单击"IP地址"选项卡/菜单>,您将看到"IPAll"..查看那里的端口.它应该默认为1433.如果你有2个版本的SQL Express,那么它可能会有所不同.还要确保您的服务正在运行(状态为"已启动")在Windows控制面板>管理工具>服务> SQL Server(SQLEXPRESS)中.Windows 7略有不同,但你会发现它.

双反斜杠需要在Java字符串中.这只是在运行时打印一个反斜杠,因为它是一个转义序列.

import java.sql.*;

public class TestConnection
{
    public static void main(String[] args)
    {
        DB db = new DB();
        db.dbConnect("jdbc:sqlserver://{computer-name}\\SQLEXPRESS:1433;databaseName=abc;integratedSecurity=true;","sa","password");
    }
}

class DB
{
    public DB() {}

    public void dbConnect(String db_connect_string, String db_userid, String db_password)
    {
        try
        {
            Connection conn = DriverManager.getConnection(db_connect_string, db_userid, db_password);
            System.out.println("connected");
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
};
Run Code Online (Sandbox Code Playgroud)


小智 2

尝试使用本地计算机的 IP 地址而不是 localhost。