2
我有这种方法,与工作Npgsql的:代码重复,相同的功能不同类型
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();
}
}
现在我需要有完全相同的方法,但使用ODBC代替。我只需要做出这些改变
- NpgsqlCommand到ObdcCommand
- NpgsqlDataAdapter到OdbcDataAdapter的
- NpgsqlException到OdbcException
我如何才能避免重复代码合并这一点,只有一种方法?
有一个布尔,useODBC什么的,并相应的代码? – BugFinder
好的,我如何避免try finally块的重复? – jankes
虽然我没有使用NGpgsql命令,但它们看起来不一样,所以唯一明显的变化就是捕获odbcexception ..所以只需添加另一个catch。 – BugFinder