Время от времени приходится общаться с СУБД FireBird и Interbase. И вот недавно возникла необходимость поиска и выбора всех вложенных элементов дерева. В моём случае необходимо было удалить все вложенные группы дерева при удалении родительской группы и в дальнейшем организовать поиск всех вложенных элементов.
Удаление можно сделать на триггерах, а вот с поиском так не прокатит. Поэтому используем рекурсивную процедуру выборки. (заранее оговорюсь, рекурсия — это вариант для небольших и не очень нагруженных БД, если база большая и нагрузка на СУБД планируется существенная, то рекурсии лучше избежать, пример того как это можно сделать будет ниже)
Давно меня интересовал этот вопрос! Как же так сделать? Вставить одним запросом в таблицу несколько строк. Дело в том, что в СУБД InterBase в отличие от множества других СУБД запрос типа:
insert into tabble1
(param1, param2)
values
(1, 'Сидоров'), (2, 'Петров'), (3, 'Иванов');
выполнить, оказывается нельзя.
Даже не знаю по какой причине, но нельзя и всё тут. Не работает такое.
Но ведь очень хочется!!!
Ведь вставка за один раз множества записей сильно экономит время, делается быстрее.
И оказывается есть таки альтернатива!
Часто сталкиваюсь с необходимостью взаимодействия различных приложений написанных на .NET с базами данных FireBird и InterBase. Поэтому решил написать пример для памяти, чтобы в следующий раз не искать по собственным исходникам а быстренько заглянуть сюда. Возможно кому-то тоже пригодится.
Итак, чтобы подключиться к базе данных нам потребуется Коннектор: «FirebirdClient-2.5.0-Alpha2.msi» — в моём случае такой, возможно уже есть новее. (вбиваете в поисковике — найдётся).
После установки в Program Files появится папочка FirebirdClient 2.0 — в ней лежат необходимые библиотеки. Добавляем оттуда в наш проект через «Add Reference» библиотеку: FirebirdSql.Data.FirebirdClient.dll