How to check if connection string is valid?

前端 未结 4 1548
旧时难觅i
旧时难觅i 2020-11-28 22:48

I\'m writing an application where a user provides a connection string manually and I\'m wondering if there is any way that I could validate the connection string - I mean ch

相关标签:
4条回答
  • 2020-11-28 23:07

    If the goal is validity and not existence, the following will do the trick:

    try
    {
        var conn = new SqlConnection(TxtConnection.Text);
    }
    catch (Exception)
    {
        return false;
    }
    return true;
    
    0 讨论(0)
  • 2020-11-28 23:08

    For sqlite use this: Suppose you have connection string in textbox 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
    

    I think you can easilly convert it to c# code

    0 讨论(0)
  • 2020-11-28 23:10

    You could try to connect? For quick (offline) validation, perhaps use DbConnectionStringBuilder to parse it...

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

    But to check whether the db exists, you'll need to try to connect. Simplest if you know the provider, of course:

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

    If you only know the provider as a string (at runtime), then use DbProviderFactories:

        string provider = "System.Data.SqlClient"; // for example
        DbProviderFactory factory = DbProviderFactories.GetFactory(provider);
        using(DbConnection conn = factory.CreateConnection()) {
            conn.ConnectionString = cs;
            conn.Open();
        }
    
    0 讨论(0)
  • 2020-11-28 23:30

    Try this.

        try 
        {
            using(var connection = new OleDbConnection(connectionString)) {
            connection.Open();
            return true;
            }
        } 
        catch {
        return false;
        }
    
    0 讨论(0)
提交回复
热议问题