C#:connessione a un database MySQL

C#:connessione a un database MySQL

Il modo più semplice per connettersi a un database MySQL in un progetto .NET è utilizzare il pacchetto MySql.Data (da Oracle). Fornisce classi che implementano le interfacce ADO.NET standard (come IDbConnection).

Innanzitutto, aggiungi il pacchetto MySql.Data al tuo progetto (questo sta usando Visualizza> Altre finestre> Console di gestione pacchetti ):

Install-Package MySql.Data
Code language: PowerShell (powershell)

Ora usa la classe MySqlConnection per connetterti al database MySQL (fornendolo con una stringa di connessione) ed eseguire una query. Ecco un esempio:

using MySql.Data.MySqlClient;

var connectionString = "server=remoteserver;database=moviesdb;user id=sqluser;password=abc;";

using (var connection = new MySqlConnection(connectionString))
{
    connection.Open();
    
    using var command = new MySqlCommand("SELECT COUNT(*) FROM movies", connection);
    var movieCount = command.ExecuteScalar();

    Console.WriteLine($"There are {movieCount} movies");
}
Code language: C# (cs)

Nota:chiudi automaticamente la connessione creando l'oggetto MySqlConnection in un blocco "using".

Questo si connette correttamente, esegue la query e restituisce:

There are 20 moviesCode language: plaintext (plaintext)

Utilizzo di Dapper con MySQL

Quando si eseguono query, è spesso necessario aggiungere parametri di query e quindi mappare i risultati della query su una o più classi. Questo può essere davvero noioso.

Dapper semplifica le cose facendo le parti noiose per te. Lo fa estendendo l'interfaccia IDbConnection. Poiché MySqlConnection implementa questa interfaccia, ciò significa che puoi utilizzare Dapper con essa. Mostrerò un esempio.

Innanzitutto, aggiungi il pacchetto Dapper al tuo progetto:

Install-Package Dapper
Code language: PowerShell (powershell)

Ora crea la connessione con MySqlConnection come al solito. Quindi usa un metodo di estensione Dapper per eseguire una query e mappare i risultati agli oggetti Movie:

using MySql.Data.MySqlClient;
using Dapper;

var connectionString = "server=remoteserver;database=moviesdb;user id=sqluser;password=abc;";

using (var connection = new MySqlConnection(connectionString))
{
    var movies = connection.Query<Movie>("SELECT * FROM movies");
}
Code language: C# (cs)

Nota:non è necessario chiamare connection.Open(). Dapper lo fa per te.

Questo è molto più semplice che mappare manualmente i risultati della query (MySqlCommand.ExecuteReader() + scorrere le righe dei risultati con MySqlDataReader e mappare ogni colonna su una proprietà Movie).

Ulteriori informazioni sull'esecuzione di query di base con Dapper.