ich diese Methode haben, die mit Npgsql funktioniert:Code-Duplizierung, gleiche Funktionalität verschiedene Typen
private DataTable GetTableN(string sql, string[] pars)
{
NpgsqlCommand zapytanie = new NpgsqlCommand(sql, connn, trann);
NpgsqlDataAdapter da = new NpgsqlDataAdapter();
DataSet ds = new DataSet();
try
{
if (pars != null)
{
for (int i = 0; i < pars.Length; i++)
{
zapytanie.Parameters.AddWithValue("@param" + i, pars[i]);
}
}
connn.Open();
da.SelectCommand = zapytanie;
da.Fill(ds);
return ds.Tables[0];
}
catch (NpgsqlException e)
{
throw (new SqlException(e.Message.ToString()));
}
finally
{
connn.Close();
zapytanie.Dispose();
da.Dispose();
ds.Dispose();
}
}
jetzt brauche ich die gleiche Methode genau haben, sondern mit Odbc. Ich würde nur diese Änderungen
- NpgsqlCommand machen müssen
- NpgsqlDataAdapter zu OdbcDataAdapter
- NpgsqlException zu OdbcException
ObdcCommand Wie kann ich fusionieren dies, um Code Doppelarbeit zu vermeiden und haben nur eine Methode?
Haben Sie einen Boolean, useODBC oder etwas, und Code entsprechend? – BugFinder
Ok, und wie vermeide ich die Vervielfältigung der try finally Blöcke? – jankes
Während ich nicht verwendet NGpgsql Befehle, sie nicht anders aussehen, so dass die einzige offensichtliche Änderung wäre, die Odbcexception zu erfassen .. also nur einen weiteren Fang .. – BugFinder