Wie kann man überprüfen, ob Verbindungszeichenfolge gültig ist?
-
10-07-2019 - |
Frage
Ich schreibe eine Anwendung, bei der ein Benutzer manuell eine Verbindungszeichenfolge liefert und ich frage mich, ob es eine Möglichkeit ist, dass ich die Verbindungszeichenfolge bestätigen konnte -. Ich meine, überprüfen, ob es korrekt ist und ob die Datenbank vorhanden ist
Lösung
Sie könnten versuchen, zu verbinden? Für die schnelle (offline) Validierung, vielleicht DbConnectionStringBuilder
es zu analysieren, verwenden ...
DbConnectionStringBuilder csb = new DbConnectionStringBuilder();
csb.ConnectionString = "rubb ish"; // throws
Aber um zu überprüfen, ob der db vorhanden ist, werden Sie versuchen müssen, zu verbinden. Einfachstes, wenn Sie wissen, die Anbieter, natürlich:
using(SqlConnection conn = new SqlConnection(cs)) {
conn.Open(); // throws if invalid
}
Wenn Sie nur den Anbieter als String (zur Laufzeit) kennen, dann DbProviderFactories
verwenden:
string provider = "System.Data.SqlClient"; // for example
DbProviderFactory factory = DbProviderFactories.GetFactory(provider);
using(DbConnection conn = factory.CreateConnection()) {
conn.ConnectionString = cs;
conn.Open();
}
Andere Tipps
Versuchen Sie dies.
try
{
using(var connection = new OleDbConnection(connectionString)) {
connection.Open();
return true;
}
}
catch {
return false;
}
Wenn das Ziel Gültigkeit und nicht die Existenz, die folgenden den Trick:
try
{
var conn = new SqlConnection(TxtConnection.Text);
}
catch (Exception)
{
return false;
}
return true;
Für SQLite verwenden diese: Angenommen, Sie Verbindungszeichenfolge in Text txtConnSqlite haben
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
Ich glaube, Sie easilly es zu c # -Code konvertieren