C# 测试SQL连接字符串可用性的最有效方法

C# 测试SQL连接字符串可用性的最有效方法,c#,sql,sql-server,sqlconnection,C#,Sql,Sql Server,Sqlconnection,我写下了这段代码,我试图让它测试SQL字符串连接,但我不知道如何处理connection.Open=true的部分,你能帮我解决这个问题吗?非常感谢您抽出时间 private void button1_Click(object sender, EventArgs e) { try { using (SqlConnection connection = new SqlConnection("Data Source='" + tex

我写下了这段代码,我试图让它测试SQL字符串连接,但我不知道如何处理
connection.Open=true
的部分,你能帮我解决这个问题吗?非常感谢您抽出时间

  private void button1_Click(object sender, EventArgs e)
    {
        try
        {
            using (SqlConnection connection = new SqlConnection("Data Source='" + textBox1.Text + "';Initial Catalog='" + textBox2.Text + "';User ID='" + textBox3.Text + "';Password='" + textBox4.Text + "'"))
            {
                try
                {
                    connection.Open();
                    if (connection.Open == true) // if connection.Open was successful
                    {
                        MessageBox.Show("You have been successfully connected to the database!");
                    }
                    else
                    {
                        MessageBox.Show("Connection failed.");
                    }
                }
                catch (SqlException) { }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("Chyba v přihlášení: " + ex);
        }
        finally
        {

        }
    }
它说:“不能指定‘打开’,因为它是一个‘methoud组’”。我知道这段代码可能非常糟糕,但我需要以某种方式处理它,不知道什么是正确的方法。多谢各位

对于未打开的连接,这实际上不起作用:

using (SqlConnection connection = new SqlConnection("Data Source='" + textBox1.Text + "';Initial Catalog='" + textBox2.Text + "';User ID='" + textBox3.Text + "';Password='" + textBox4.Text + "'"))
        {

             connection.Open();

            if (connection.State == ConnectionState.Open)
            {

                MessageBox.Show("Spojení s databázi problěhlo úspěšně.");
            }
            connection.Close();
            if (connection.State == ConnectionState.Closed)
            {
                MessageBox.Show("Spojení selhalo");
            }
        }

您使用的是
connection.Open=true
,就好像它是一个属性一样

它是一种方法:
connection.Open()

使用枚举确定连接是否打开,例如:

connection.State == ConnectionState.Open

您需要检查它是否由以下代码打开:

if(connection.State == ConnectionState.Open)
{
  ...
}

.Open()
是一个返回void的方法,它不是属性。不能给它赋值。查看我的答案。您好,谢谢您的时间,请问您的情况如何(如果未成功连接?)我尝试了connection.State==ConnectionState.Closed或Breaked,但没有弹出消息框。您在哪里调用了
connection.State==ConnectionState.Closed
?你能更新你的问题吗?谢谢。第二个消息框显然不会显示,因为您刚刚调用了
connection.Open()
来打开连接,因此它是打开的,而不是关闭的。尝试调用
connection.Close()
,然后测试第二个messagebox。我尝试了,但在连接失败时它停止了。Open失败,SqlConnection详细信息不正确,并且没有弹出消息框。非常感谢您的时间,我已经更新了我的问题,我现在有什么代码。发生这种情况时,您可以随时在调试器中检查连接,您应该能够看到它的状态。或者,您可以只执行
如果(connection.State!=ConnectionState.Open)
则它将匹配所有其他场景。您好,谢谢您的时间,我可以问一下外观如何(如果未成功连接?)我尝试了connection.State==ConnectionState.Closed或breaked,但它没有弹出消息框。我会尝试
connection.State=ConnetionState.Open
我也试过了,但也没有弹出消息框。我更新了问题,以便你能更好地理解我的问题。