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