Несмотря на развитие технологий доступа к данным, программистам по-прежнему часто приходится работать с OLE DB.
Как известно, для того чтобы программа, использующая эту технологию, могла работать с базой данных, на компьютере пользователя должен присутствовать специальный провайдер, который обеспечивает работу с нужной системой управления базами данных. В противном случае работа приложения с базой данных через OLE DB будет не возможна.
Следовательно, возникает необходимость проверки наличия на компьютере пользователя необходимый OLE DB провайдер.
К счастью, в .NET имеется штатное средство, которое позволяет без труда решить эту задачу.
Речь идёт о классе OleDbEnumerator (пространство имён System.Data.OleDb). Его метод GetElements возвращает подробную информацию о всех провайдерах OLE DB, которые установлены на данном компьютере в формате DataTable.
Всё что требуется, это выполнить поиск нужного провайдера по его названию с помощью метода расширения LINQ Select и в зависимости от результата поиска выполнить те или иные действия.
Ниже приведён пример проверки наличия на компьютере одного из OLE DB провайдера для работы с Microsoft SQL Server.
1 2 3 4 5 6 7 8 9 10 11 12 |
using System.Data.OleDb; . . . OleDbEnumerator enumerator = new OleDbEnumerator(); DataRow[] foundRows = enumerator.GetElements().Select("SOURCES_DESCRIPTION = 'Microsoft OLE DB Provider for SQL Server'"); if (foundRows.Length > 0) { /*OLE DB провайдер установлен! Всё в порядке!*/ } else { /*OLE DB провайдер не установлен!*/ } |
В данном примере поиск OLE DB провайдера выполняется по его описанию. Также можно выполнять поиск и по его имени.
1 |
DataRow[] foundRows = enumerator.GetElements().Select("SOURCES_NAME = 'SQLOLEDB'"); |
Таким несложным способом можно проверить наличие на компьютере любого OLE DB провайдера.
Добавить комментарий