Я использую вспомогательный метод, подобный этому:
private OdbcCommand GetCommand(string sql)
{
string conString = "blah";
var con = new OdbcConnection(conString);
var cmd = new OdbcCommand(sql, con);
return cmd;
}
Затем я использую его так:
using (var cmd = GetCommand("select * from myTable")
{
cmd.connection.open();
using(var reader = cmd.ExecuteReader())
{
}
}
Вот второй пример:
public static OdbcDataReader GetReader(string conString,string sql)
{
var cmd = GetCommand(conString, sql);
cmd.Connection.Open();
return cmd.ExecuteReader();
}
используется так:
using(var reader = GetReader("blah","select * from blah")
{
}
В этих двух случаях я избавляюсь от объектов подключения и cmd?Я думаю, что соединение не удаляется в первом, и ни соединение, ни cmd во втором не так ли?
Нужно ли мне проделать долгий путь, чтобы обеспечить правильное удаление, или есть более короткий подход??
using (var con ...)
using (var cmd)
using (var reader)