C# .NET Core MySQL Connect
In diesem kurzen Tutorial zeige ich wie man mit C# und .NET Core eine MySQL Connection aufbaut und Daten aus der Datenbank ausliest. MySQL oder MariaDB sind eine Open Source Alternative zu den teuren business Datenbanksystemen MSSQL und OracleDB.
C# .NET Core MySQL Connect
Unzählige Webseite speichern die Daten in einer MySQL Datenbank. Warum? Weil es eine Open Source Datenbank ist und diese noch dazu extrem stabil läuft. Sofern man nun keine speziellen Anforderungen hat, mit riesigen Datensätzen und starker Auslastung rechnen muss, dann kann man auch im Business-Umfeld darauf setzen. Da Oracle MySQL gekauft hat ist ebenfalls dessen Fork MariaDB zu empfehlen. Ich habe mir nun angesehen wie einfach es ist mit C# und .NET Core eine solche Datenbank anzubinden. Für spätere Projekte im Microservice Umfeld soll so eine Datenbank zur Anwendung kommen.
MySQL.Data
Als C# Entwickler hat man es recht einfach, denn für fast alle Systeme gibt es für die Verwendung notwendige NuGet Packages. Für MySQL benötigt man das Paket MySQL.Data, welches man im offiziellen NuGet Feed findet. Meine Beispielimplementierung findet man wie immer auf meiner GitHub Seite.
Der Workflow ist nun folgender:
- ich erstelle ein neues .NET Core Projekt in Visual Studio
- mit einem Rechtsklick auf das Projekt wählt man im Kontextmenü „NuGet-Pakete verwalten“
- über die Suche nach „mysql“ findet man das gesuchte MySQL.Data Paket an erster Stelle
Ich habe mir dieses Paket für meine Projekt installiert.
Connection herstellen
Um eine Verbindung mit einer Datenbank herstellen zu können benötigt man 4 Dinge:
- URL oder IP-Adresse
- Name der Datenbank
- Benutzername
- Passwort
Alternativ muss man auch noch einen Port angeben, sofern der MySQL Standardport nicht verwendet wird. Eine Connection wird in C# nun wie folgt aufgebaut:
string server = "ADD_YOUR_SERVER_URL_OR_IP_ADDRESS_HERE"; string database = "ADD_YOUR_DATABASE_NAME_HERE"; string uid = "ADD_YOUR_USERNAME_HERE"; string password = "ADD_YOUR_PASSWORD_HERE"; string connectionString; connectionString = "SERVER=" + server + ";" + "DATABASE=" + database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";"; connection = new MySqlConnection(connectionString);
Du musst nun lediglich die Platzhalter mit den eigentlichen Daten deiner Datenbank ersetzen.
Abfrage erstellen
Eie erfolgreiche Verbindung testet man am besten mit einem Select Statement auf einer beliebigen Tabelle. Implementiert habe ich meinen Test wie folgt:
... string query = "SELECT * FROM sensor_data"; //Create a list to store the result List<string> list = new List<string>(); //Open connection if (this.OpenConnection() == true) { //Create Command MySqlCommand cmd = new MySqlCommand(query, connection); //Create a data reader and Execute the command MySqlDataReader dataReader = cmd.ExecuteReader(); //Read the data and store them in the list while (dataReader.Read()) { list.Add(dataReader["id"] + "," + dataReader["datetime"] + "," + dataReader["api_temperature"]); } //close Data Reader dataReader.Close(); //close Connection this.CloseConnection(); } //return list to be displayed return list; ...
Die Abfrage läuft übrigens auf meiner Datenbank in der ich laufend mit dem Raspberry Pi Wetterdaten speichere.
Fazit
Dank NuGet Package ist die Verbindung mit der MySQL denkbar einfach. Nun steht der Verwendung von MySQL als Datenbanksystem für das nächste .NET Core C# Projekt nichts mehr im Weg.