Читать Pervasive Database 9 без создания ODBC DSN
Я пишу приложение на C# (.NET 4.0), которое должно интегрироваться с другим, гораздо более старым приложением. Частью требования является то, что моя программа должна читать данные из трех файлов Btrieve. Я могу предположить, что эти файлы данных Btrieve уже будут существовать на компьютерах, на которых установлена моя программа, и я также могу предположить, что Pervasive PSQL V9 также будет установлен и запущены реляционные и транзакционные сервисные программы.
У меня есть связанные файлы DDF, и я могу установить их как часть моего приложения. Как они были созданы, я должен поместить их в другой каталог, где находятся файлы данных Btrieve. (Они должны быть подкаталогом каталога, в котором находятся файлы данных).
Когда я начинал, я ничего не знал о Pervasive или Btrieve, но после небольшого эксперимента я дошел до того, что смог создать DSN с помощью 32-битного инструмента администрирования ODBC, и я мог читать из файлов данных, используя Разъем ODBC ADO. Пока все хорошо.
Мой вопрос заключается в том, можно ли читать эти файлы из моей программы.NET, не создавая ODBC DSN на компьютере? Другими словами, возможно ли указать каталог, в котором находятся файлы *.DAT, и каталог, в котором файлы *.DDF находятся в строке подключения ODBC?
Я не привержен использованию ODBC, я счастлив использовать OLEDB или любую другую технологию, которая позволяет мне надежно читать из этих файлов, используя.NET.
2 ответа
Хотя соединение без DSN позволяет вам подключаться без DSN, вам все равно потребуется имя базы данных. Распространенные имена баз данных могут быть созданы на лету с помощью DTI или DTO. Используя C#, я бы предложил DTO.
Если вы не можете создать имя базы данных, вы можете использовать OLEDB. Он поддерживает использование пути в Data Source
параметр строки подключения, как описано в разделе " Удаленные подключения " документации OLEDB.
Еще одно предостережение: не забудьте скомпилировать вашу.NET-программу как x86, а не как AnyCPU. Поставщик Pervasive OLEDB является только 32-битным. Если вы устанавливаете приложение в 64-битной операционной системе, скомпилированной как AnyCPU, оно будет искать 64-битного провайдера и завершится ошибкой.
Вы должны искать соединение без DSN. Вместо передачи DSN=mydsn методу подключения (где mydsn - это настроенный DSN), вы передаете DRIVER=xxx (где xxx - имя драйвера) и любые другие атрибуты, необходимые для направления его в файлы. Существует множество сайтов со списками строк подключения для разных драйверов ODBC, поэтому один из них обязательно должен перечислить Pervasive, если вы не можете найти документацию для своего драйвера ODBC. Другой вариант - взглянуть на DSN в реестре, где вы найдете имена атрибутов, которые вам нужно указать.