Questa domanda potrebbe essere stata chiesta in precedenza, ma non riesco a trovarla.
Quindi ecco:
Sto scrivendo un programma che si collega a diversi database (uno alla volta). Al momento utilizza OleDbConnection
, ma a un certo punto verrà modificato in SqlConnection
.
Devo creare e aprire una nuova connessione ogni volta , o semplicemente chiudere la connessione esistente, assegnare una nuova connectiontring e riaprirla.
So che entrambe le soluzioni funzionano, ma perché preferirei l'una rispetto all'altra.
Per completezza, ecco l'implementazione:
Codice eseguito quando si modifica il database.
var connection = new OleDbConnection(connectionString);
HasConnection = true;
ConnectionEstablished(this, new ConnectionArgs<OleDbConnection>(connection));
Codice che agisce su quella modifica
public async Task ExecuteAsync(string query, Func<IDataReader, Task> onExecute, params DataParameter[] parameters)
{
using(var command = builder.BuildCommand(query))
{
foreach(var parameter in parameters)
command.AddParameter(parameter);
if(!connection.IsOpen)
connection.Open();
await command.ExecuteAsync(onExecute);
}
}
private void OnConnectionEstablished(object sender, ConnectionArgs<IConnection> e)
{
this.connection = e.Connection;
}
C'è un modo per usare l'istruzione using
e conservare ancora questa struttura?