簡體   English   中英

如何檢查連接字符串是否有效?

[英]How to check is connection string valid?

我必須保存數據,我必須先測試連接才能保存。 如何測試此連接字符串對特定連接是否有效?

我的代碼是這樣的:

static public bool TestConnString(string connectionString)
{
    bool returnVal = true;
    using (SqlConnection conn = new SqlConnection(connectionString))
    {
        try
        {
            conn.Open();

            if (conn.State != ConnectionState.Open)
                returnVal = false;
            else
                returnVal = true;
        }
        catch (Exception ex)
        {
            returnVal = false;
        }
    }

    return returnVal;
}

連接字符串是:

Data Source=testSvr03\SQLEXPRESS;Initial Catalog=Test; Connection Timeout=600; Persist Security Info=True;User ID=Test; password=test 

如果我在連接字符串中給出錯誤的數據源,那么在conn.open()之后它永遠不會在這個函數中返回。我把catch塊但是它進來了

誰能告訴我什么是解決方案?

您可以讓SqlConnectionStringBuilder構造函數檢查它:

bool isValidConnectionString = true;
try{
    var con = new SqlConnectionStringBuilder("ABC");
}catch(Exception)
{
    // can be KeyNotFoundException, FormatException, ArgumentException
    isValidConnectionString = false;
}

以下是不同數據提供者的ConnectionStringBuilders 概述

Provider                   ConnectionStringBuilder 
System.Data.SqlClient      System.Data.SqlClient.SqlConnectionStringBuilder
System.Data.OleDb          System.Data.OleDb.OleDbConnectionStringBuilder
System.Data.Odbc           System.Data.Odbc.OdbcConnectionStringBuilder
System.Data.OracleClient   System.Data.OracleClient.OracleConnectionStringBuilder

您可以將return語句放在catch塊中,就像這樣

static bool TestConnectionString(string connectionString)
{
    using (MySqlConnection conn = new MySqlConnection(connectionString))
    {
        try
        {
            conn.Open();

            return (conn.State == ConnectionState.Open);
        }
        catch
        {
            return false;
        }
    }
    return false;
}

我剛試過這個。 如果使用空字符串調用此函數,它可以正常工作(返回false值)。

你可以嘗試打開連接

SqlConnection myConnection = new SqlConnection(myConnString); 
try
{
   myConnection.Open();
}
catch(SqlException ex)
{
   //Failure to open
}
finally
{
   myConnection.Dispose();
}

您可以在后台線程中執行此操作,您可以設置超時,如果您不想等待很長時間

這是我最終使用的:

private bool validateConnectionString(string connString)
{
    try
    {
        var con = new SqlConnectionStringBuilder(connString);
        using (SqlConnection conn = new SqlConnection(connString))
        {
            conn.Open();
            return (conn.State == ConnectionState.Open);
        }
    }
    catch
    {
        return false;
    }
}

嘗試這個。 這是檢查連接的最簡單方法。

    try 
    {
        using(var connection = new OleDbConnection(connectionString)) {
        connection.Open();
        return true;
        }
    } 
    catch {
    return false;
    }

你是說連接字符串?

好吧,這樣的事可能......

try
{
//....try to connect and save it here, if connection can not be made it will throw an exception
}
catch(Exception ex)
{

}

創建一個連接對象並嘗試打開它。

如果連接字符串無效,則拋出異常。 像這樣的東西:

using(var connection = New SqlConnection("..."))
{
     connection.Open();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM