Работа с DBF с использованием C#. Если это КЛАДР, то лучше прочитать статью, а потом эту БД импортировать в базу MS SQL

1 отзыв

работа с dbf

Добрый вечер всем! Если забить в любимый поисковик что-нибудь о работе с DBF файлами, то обязательно подтянутся сайты, посвященные настройке 1С, КЛАДР’ам и проч. И мы не исключение, куда ж мы без КЛАДР! Появилась необходимость из тех самых баз данных, регулярно обновляемых и выкладываемых на сайте налог.ру, вытягивать полезную информацию. Скажу сразу, что пост не о том, как работать с этой БД адресов, а напрямую ИМХО с ней лучше вообще не работать , а о том, как подключиться к файлу DBF с использованием языка C#.

Чтобы работать с каким-то типом реляционных баз данных при помощи созданного программного обеспечения, надо задействовать функции СУБД. Т.к. систем управления базами данных существует много, желательно абстрагироваться от деталей доступа к данным и создать специальный программный интерфейс. Microsoft такой интерфейс создала и назвала его ODBC. Все, что нужно — это по мере необходимости добавлять драйверы для специфических СУБД и работать с ними через ODBC (Open Database Connectivity).

Стоит упомянуть еще про одно явление — про DSN (Data Source Name). Это специальная структура, в которой хранится название базы данных, путь до нее и указание на ее драйвер. Также можно указать логин и пароль для доступа к БД. Существует три типа DSN — пользовательский, системный и файловый. К первому имеет доступ пользователь, добавивший этот DSN, ко второму имеют доступ все пользователи компьютера, которым даны соответствующие права. Файловый DSN задает источники данных, к которым будут иметь доступ пользователи, имеющие необходимый драйвер. Кстати, в последнем случае доступ может осуществляться и с других компьютеров.

Если мы «в лоб» напишем строку подключения к DBF-файлу, например,

«Driver={Microsoft dBase Driver (*.dbf)}; SourceType=DBF;DefaultDir=ПУТЬ_К_ПАПКЕ_ГДЕ_DBF;Exclusive=No; Collate=Machine;NULL=NO;DELETED=NO; BACKGROUNDFETCH=NO»

, то мы в процессе отправки запроса можем получить ошибку «[Диспетчер драйверов OBDC]Источник данных не найден и не указан драйвер по умолчанию».

В случае ошибки, чтобы можно было к разрабатываемому ПО подключить файл DBF в качестве базы данных, нужно этот самый драйвер в системе как-то прописать. Это делается с помощью оснастки odbcad32.exe, расположенной по адресу  %WINDIR%\SysWOW64\odbcad32.exe. Заметьте, что для указания драйвера для DBF необходима именно 32-разрядная версия . В 64-разрядной у меня была возможность выбрать только SQL Native Client.

DSN ODBC

Чтобы добавить драйвер, надо в окошке нажать кнопку «Добавить». В открывшемся списке нам необходимо выбрать пункт «Microsoft dBase Driver (*.dbf)» и нажать кнопку «Готово».

выбор источника данных

Откроется окно настроек DSN для dBase, которых не так уж много — название, путь до базы и расположение индексных файлов, если такие имеются. Здесь надо прописать произвольное имя источника данных, которое мы будем использовать в коде в качестве строки подключения, указать каталог, в котором лежат наши dbf-файлы. Это делается путем снятия галки «Использовать текущий каталог» и нажатия кнопки «Выбор каталога…». Вряд ли Ваша БД находится по адресу C:\Windows\System32 . В диалоговом окне Вам надо будет указать путь до каталога. Кстати, окошко такое, что искать не очень удобно. Но оно стандартное, никуда не денешься. После произведения базовых настроек надо нажать кнопку «ОК».

dbase dsn

В качестве отступления скажу, что если бы мы, например, выбрали в качестве источника данных какой-нибудь «SQL Native Client», то мы бы обнаружили, что откроется собственное окно настроек соединения с SQL-сервером.

sql server client dsn

Теперь у нас есть возможность в коде писать строку кода так, как у нас работает как нам нравится. Пример со стандартной, приведенной выше, строкой подключения:

А вот пример со строкой подключения, где используется DSN:

OurDSN — это то самое произвольное имя источника данных, которое Вы задали ранее.

Если нам необходимо сделать параметризованный запрос, то делается это примерно так:

Т.е. на месте параметра ставится знак вопроса. Если попытаться использовать привычный вариант @paramName вместо знака вопроса в sql-запросе, то вернется ошибка ODBC «Слишком мало параметров».


Один ответ “Работа с DBF с использованием C#. Если это КЛАДР, то лучше прочитать статью, а потом эту БД импортировать в базу MS SQL”

  1. ZAZENNO.INFO

    Спасибо! Как раз перевожу все свое хозяйство именно на БД, удобно и практично

    Ответить

Оставьте комментарий

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url=""> <img src="" alt="" class="" width="" height="">

http://noservice.ru/wp-content/plugins/wp-monalisa/icons/ab.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/ac.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/ag.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/ah.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/ai.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/ak.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/am.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/an.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/ao.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/aq.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/ar.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/at.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/av.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/aw.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/ay.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/az.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/bb.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/bc.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/bd.gif 
http://noservice.ru/wp-content/plugins/wp-monalisa/icons/be.gif 
больше...