Ich versuche, einige Fehlerbehandlung, wenn es um die Verbindung zu einer MySQL-Datenbank kommt. Ich möchte Verbindungsfehler und SQL-Fehler trennen. Issue-Sein ist der Fehler, der zurückgegeben wird, scheint kein MySQL-Fehler zu sein, sondern tatsächlich ein MS-Fehler. Das ist, was ich tue:WPF MySQL-Verbindung Fehlerbehandlung
using (MySqlConnection con = new MySqlConnection(ConString))
{
MySqlDataAdapter da = new MySqlDataAdapter();
MySqlCommand cmd = new MySqlCommand(sqlCMD, con);
try
{
System.Security.Cryptography.RSACryptoServiceProvider.UseMachineKeyStore = true;
var provider = new System.Security.Cryptography.RSACryptoServiceProvider();
con.Open();
da.SelectCommand = cmd;
da.Fill(dt);
con.Close();
}
catch (Exception x)
{
//Amazing error catching code
}
}
Jetzt kann sagen, dass ich versuche, eine Maschine zu verbinden, die MySQL nicht installiert ist, ist dies die Ausnahme, dass zurückgegeben wird:
MySql.Data.MySqlClient .MySqlException (0x80004005): Verbindung zu keinem der angegebenen MySQL-Hosts möglich. bei MySql.Data.MySqlClient.NativeDriver.Open() bei MySql.Data.MySqlClient.Driver.Open() bei MySql.Data.MySqlClient.Driver.Create (MySqlConnectionStringBuilder Einstellungen) bei MySql.Data.MySqlClient.MySqlPool .GetPooledConnection() bei MySql.Data.MySqlClient.MySqlPool.TryToGetDriver() bei MySql.Data.MySqlClient.MySqlPool.GetConnection() bei MySql.Data.MySqlClient.MySqlConnection.Open()
Jetzt Googling "0x80004005 MySQL" liefert mehrere Threads auf Stack Overflow über C# Verbindung mit MySQL. Nur eine Suche nach 0x80004005 returns a Windows XP error message page.
So das lässt mich mit einer Frage, was ist der beste Weg, um einen Verbindungsfehler vs eine SQL-Fehlermeldung zu ermitteln?
Warum nicht durchführen Fänge auf die verschiedenen Ausnahmetypen, die MySQL-Anschluss geworfen werden. (Nicht exakte Ausnahmetypen) wie try {} catch (MySqlConnectionException) {} catch (MySqlQueryException). Sie können mehr als einen Typ von Ausnahme erfassen und behandeln, insbesondere eine allgemeine Ausnahme. Anderenfalls müssten Sie die allgemeine Ausnahme untersuchen und den zugrunde liegenden Ausnahmetyp ermitteln. Sehen Sie sich auch dieses Beispiel https: //dev.mysql an.com/doc/connector-net/de/connector-net-programming-connecting-errors.html – Bearcat9425
@ Bearcat9425 schade, dass Sie dies als Kommentar und nicht eine tatsächliche Antwort beantwortet haben. Ich hätte dir den Kredit gegeben. Wie es alles ist, was ich tun kann, ist der Kommentar. Wenn Sie das nächste Mal antworten, gebe ich Ihnen die Antwort. – Xaphann
Posted mein Kommentar als Antwort für einen Verweis auf jemand anderes, der auf diese Frage kommt. Ich weiß, dass Sie bereits eine Antwort markiert haben, aber ich dachte mir, dass ich meine Version der Antwort einfügen würde. – Bearcat9425