example ejemplo create c# connection-string

c# - ejemplo - odbc connection string



¿Cómo verificar si la cadena de conexión es válida? (4)

Estoy escribiendo una aplicación en la que un usuario proporciona una cadena de conexión de forma manual y me pregunto si hay alguna forma de que pueda validar la cadena de conexión; me refiero a verificar si es correcta y si la base de datos existe.


Para sqlite use esto: suponga que tiene cadena de conexión en el cuadro de texto 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

Creo que puedes convertirlo fácilmente en código c #


Prueba esto.

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


Si el objetivo es la validez y no la existencia, lo siguiente hará el truco:

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


Podrías tratar de conectarte? Para una validación rápida (fuera de línea), quizás use DbConnectionStringBuilder para analizarlo ...

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

Pero para verificar si el db existe, deberá intentar conectarse. Más simple si conoce al proveedor, por supuesto:

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

Si solo conoce el proveedor como una cadena (en tiempo de ejecución), entonces use DbProviderFactories :

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