Поскольку вы не закрываете соединение, файл ldb остается в наличии, поскольку вы все еще подключены к БД.
Итак, вы должны поместить оператор using вокруг объявления соединения (или закрыть соединениев блоке finally вашего оператора try [это именно то, что делает оператор using nb).
using( var conn = new OleDbConnection (connectionstring) )
{
conn.Open();
using( cmd = conn.CreateCommand() )
{
cmd.Parameters.Add (..);
...
for( ... )
{
cmd.Parameters.Clear();
cmd.CommandText = "";
cmd.Parameters["@p_param"].Value = ...
cmd.ExecuteNonQuery();
}
}
}
С помощью предложения using в цикле for вы удаляете OleDbCommand для каждой записи, которую вы используете.собираюсь вставить.Однако вы можете повторно использовать экземпляр OleDbCommand для каждой вставки.(См. Код выше).
Рядом с этим вы должны явно начать транзакцию.Поскольку, если вы этого не сделаете, для каждого оператора вставки будет создана неявная транзакция.Кроме того, выполнив все вставки внутри одной транзакции, вы сможете откатить все изменения (вставки), которые вы сделали при возникновении ошибки.
(Например, если вставка строки № 159 завершится неудачно, выможет откатить все 158 вставок, которые вы сделали ранее).