Вы закрываете свои адаптеры данных? Вам нужно либо явно вызвать dtt.Close()
, либо использовать using
блоки (они IDisposable):
DataSet dstt = new DataSet();
using(OleDbDataAdapter dtt = new OleDbDataAdapter(tot))
{
dtt.Fill(dstt);
dtt.Close();
}
и т.д.. Close () здесь избыточен, потому что блок using
будет вызывать dtt.Dispose()
, но я все равно предпочитаю оставить его.
Большинство объектов ADO.NET являются IDisposable; в то время как я сомневаюсь, что некоторые из них имеют значение, закрываете ли вы и удаляете их или нет (например, команды), я думаю, что DataAdapters, соединения и т. д. делают.