java - SQLServer express R2 的 JDBC 连接 Url

标签 java database jdbc sql-server-2008-r2

我写了下面一行来连接 sql server express r2:

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

它给出了异常(exception): 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:连接被拒绝:连接 启用 TCP/IP

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

展开 SQL Server 2005 网络配置节点。 在右 Pane 中,选择 SQLEXPRESS 的协议(protocol)。右 Pane 现在应该显示 Protocols 和 Status 列。 从 TCP/IP 上下文菜单中选择启用。 查找或配置 TCP/IP 端口

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

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

在那之后,连接也给出了同样的异常。

最佳答案

尝试运行一些 Java 代码来测试它。将 {computer-name}\SQLEXPRESS 替换为您在 SQL Server Management Studio 的根节点中看到的域。安装 SQL Express 时,您可以选择将“SQLEXPRESS”的名称更改为自定义名称,因此这也可能有所不同。要获取端口号,请转至 Windows 开始菜单 > SQL Server 2008 R2 > 配置工具 > SQL Server 配置管理器 > 展开“SQL Server 网络配置”> 单击“SQLEXPRESS 协议(protocol)”> 右键单击​​“TCP/IP”并选择属性> 单击“IP 地址”选项卡/菜单 > 在 Windows XP 中,您将看到“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();
        }
    }
};

关于java - SQLServer express R2 的 JDBC 连接 Url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9256044/

相关文章:

java - 如何在 Lombok 构建器中的构造函数之后运行代码

java - PostgreSQL IF 语句不接受参数

mysql - 尝试插入地理位置数据时出现 QueryException

java - JDBC ResultSet 关闭语句

java - 哈希表大小设置

java - 如何使表格组件中的所有行拉伸(stretch)到相同的高度?

mysql - 我怎样才能备份mysql数据库表

python - Django 内存中 SQLite3 数据库

MySQL 并使用 INNER JOIN 删除多行

java - 在 Java 中准备 SQL 查询时如何设置整数列表