Как проверить правильность строки подключения?

Я пишу приложение, в котором пользователь предоставляет строку подключения вручную, и мне интересно, есть ли способ проверить строку подключения – я имею в виду проверку правильности и наличия базы данных.

    Вы могли бы попытаться подключиться? Для быстрой (автономной) проверки, возможно, используйте DbConnectionStringBuilder для ее анализа …

      DbConnectionStringBuilder csb = new DbConnectionStringBuilder(); csb.ConnectionString = "rubb ish"; // throws 

    Но чтобы проверить, существует ли db, вам нужно попытаться подключиться. Проще всего, если вы знаете поставщика, конечно:

      using(SqlConnection conn = new SqlConnection(cs)) { conn.Open(); // throws if invalid } 

    Если вы знаете только поставщика как строку (во время выполнения), используйте DbProviderFactories :

      string provider = "System.Data.SqlClient"; // for example DbProviderFactory factory = DbProviderFactories.GetFactory(provider); using(DbConnection conn = factory.CreateConnection()) { conn.ConnectionString = cs; conn.Open(); } 

    Попробуй это.

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

    Если цель – это действительность, а не существование, следующее будет делать трюк:

     try { var conn = new SqlConnection(TxtConnection.Text); } catch (Exception) { return false; } return true; 

    Для sqlite используйте это: предположим, что у вас есть строка подключения в текстовом поле txtConnSqlite

      Using conn As New System.Data.SQLite.SQLiteConnection(txtConnSqlite.Text) Dim FirstIndex As Int32 = txtConnSqlite.Text.IndexOf("Data Source=") If FirstIndex = -1 Then MsgBox("ConnectionString is incorrect", MsgBoxStyle.Exclamation, "Sqlite") : Exit Sub Dim SecondIndex As Int32 = txtConnSqlite.Text.IndexOf("Version=") If SecondIndex = -1 Then MsgBox("ConnectionString is incorrect", MsgBoxStyle.Exclamation, "Sqlite") : Exit Sub Dim FilePath As String = txtConnSqlite.Text.Substring(FirstIndex + 12, SecondIndex - FirstIndex - 13) If Not IO.File.Exists(FilePath) Then MsgBox("Database file not found", MsgBoxStyle.Exclamation, "Sqlite") : Exit Sub Try conn.Open() Dim cmd As New System.Data.SQLite.SQLiteCommand("SELECT * FROM sqlite_master WHERE type='table';", conn) Dim reader As System.Data.SQLite.SQLiteDataReader cmd.ExecuteReader() MsgBox("Success", MsgBoxStyle.Information, "Sqlite") Catch ex As Exception MsgBox("Connection fail", MsgBoxStyle.Exclamation, "Sqlite") End Try End Using 

    Я думаю, вы можете легко преобразовать его в код c #

    Давайте будем гением компьютера.