verwendetes Datenbanksystem: MySQL
Hallo,
ich habe auf einem lokalen Server im Haus eine MySQL-Datenbank.
Mittels meiner App kann ich mich mit der Datenbank verbinden, und erfolgreich Pings ausführen. Sobald ich aber MySqlCommand::ExecuteReader() aufrufe, bekomme ich die folgende Fehlermeldung:> Fehlermeldung:
"Connection must be valid and open."
Hier ist der Code:
MySqlConnectionStringBuilder conBuilder = new MySqlConnectionStringBuilder();
MySqlConnection dbConn;
public void buildConn()
{
conBuilder.Server = textBox2.Text;
conBuilder.Port = 3306;
conBuilder.UserID = "root";
conBuilder.Password = "xxxx";
conBuilder.Database = "test";
conBuilder.ConnectionTimeout = 15;
String connStr = conBuilder.ToString();
String queryStr = textBox1.Text;
MySqlCommand query = new MySqlCommand(queryStr, dbConn);
dbConn = new MySqlConnection(connStr);
DataTable table = new DataTable();
dbConn.OpenAsync();
MySqlDataReader reader = query.ExecuteReader();
label1.Text = "";
while(reader.Read())
{
label1.Text += reader["Name"] + "\n";
}
dbConn.CloseAsync();
}
Mit einer Datenbank auf localhost funktioniert das.
Die Datenbank ist auch korrekt konfiguriert, da ich mittels einer Qt-C++ App damit problemlos interagieren kann.
Du verwendest hier Async auch falsch (klassischer Pitfall); bzw. prinzipiell das ganze Handling von Connections.
Evtl. etwas #Neuland, wenn Du es schon so schön betonst. =)
Trenne die Abfrage der Datenbank vom Connection Handling; anders geht es nicht sauber.
[Artikel] Drei-Schichten-Architektur
dbConn.OpenAsync();
führt dazu, dass Dein Code schneller ausgeführt wird als die Connection geöffnet wird, weil hier das await fehlt.
Korrekt wäre
await dbConn.OpenAsync();
was sich natürlich dann durch die ganzen Methoden durchziehen muss, damit es korrekt ist.
Verwende daher entweder die synchronen Methoden (nicht empfohlen) oder verwende asycn/await korrekt (empfohlen).
D.h.
Von einem manuellen Wait, um asynchrone Methoden zu "wrappen", rate ich generell ab.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code