如何让SQL连接超时变短

问题描述 投票:0回答:1

我正在开发我的小项目,并尝试将我的 Windows 窗体应用程序连接到 SQL Server。 这是我的连接类的代码:

public class DatabaseConnection
{
    private string connectionString;
    private SqlConnection connection;

    public DatabaseConnection()
    {
        connectionString = "Data Source=192.168.2.1;Initial Catalog=Hotsiy_NP;User ID=Hotsiy;Password=Yevheniy209;Connect Timeout=5";
        connection = new SqlConnection(connectionString);
    }

    public bool OpenConnection()
    {
        try
        {
            connection.Open();
            return true;
        }
        catch (Exception)
        {
            connectionString = "Data Source=91.225.200.84,1433;Initial Catalog=Hotsiy_NP;User ID=Hotsiy;Password=Yevheniy209;Connect Timeout=5";
            connection = new SqlConnection(connectionString);

            try
            {
                connection.Open();
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }
    }

    public void CloseConnection()
    {
        connection.Close();
    }

    public SqlConnection GetConnection()
    {
        return connection;
    }
}

我试图将连接超时设置为 5 秒而不是 30 秒,因为当我加载应用程序时,它尝试通过第一个 IP 连接但失败,它等待 30 秒让服务器发送错误,然后尝试通过第二个 IP 连接。 我的问题是如何让延迟时间达到5秒

我尝试了不同的方法,首先是向连接字符串添加连接超时属性:

connectionString = "Data Source=192.168.2.1;Initial Catalog=Hotsiy_NP;User ID=Hotsiy;Password=Yevheniy209;Connect Timeout=5";

第二种方法是在

connection.open()

之前将锁定超时设置为5000毫秒
try
{
    using (SqlCommand command = new SqlCommand("SET LOCK_TIMEOUT 5000", connection))
    {
        connection.Open();
    }
    return true;
}
c# sql-server connection
1个回答
0
投票

首先,如果您将密码、IP、用户名等发布到公共论坛,您应该隐藏它们。

但是回到你的问题:你的连接字符串中的属性错误

connectionString = "Data Source=XX.XXX.XXX:XXX;Initial Catalog=Hotsiy_NP;User ID=XXXX;Password=XXXXXXX;Connection Timeout=5";

其连接超时不是连接超时: 请参阅https://learn.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlconnection.connectiontimeout?view=dotnet-plat-ext-7.0以供参考

© www.soinside.com 2019 - 2024. All rights reserved.