Оптимальный способ обработать .dbf от C#

Какого поставщика данных я могу использовать для обновления .dbf файла от C#?

Я судил несколько различных .dbf поставщиков для создания DataSource, но я получаю сообщение как это: "Сообщение об ошибке: ошибка HYC00 Microsoft ODBC dBase Дополнительная опция Драйвера, не реализованная".

Или когда я генерировал набор данных и dataadapter с функцией обновления, я добрался: "Обновление требует допустимого UpdateCommand когда переданный набор DataRow с измененными строками".

Если кто-либо знает некоторый способ работать над .dbf от C# с большим количеством обновлений, помогите. Когда я пытаюсь обновить строки один за другим, это слишком медленно, потому что поставщик потеряет слишком много времени при поиске большого .dbf файла. Возможно, существует способ автоматически создать индекс и что источник данных знает для использования его?

Иначе должен загрузить все во что-то как набор данных и обновление после того, как все изменения сделаны, но часть обновления не работает на данный момент.

Справка!

1
задан Dennis Williamson 10 July 2010 в 01:16
поделиться

3 ответа

Обычно драйвер FoxPro работает с файлами .DBF. Формат файла достаточно похож, чтобы его можно было читать. Писать немного сложнее. К сожалению, поскольку DBASE - такая старая технология, .NET плохо с ней справляется, так что вы в значительной степени застряли на своем медленном варианте. Поверьте, я чувствую вашу боль, потому что мне приходится регулярно работать с ними для POS-системы, которую мы поддерживаем.

http://www.aspcode.net/Reading-DBF-files-in-C.aspx

Подключение .NET к файлу dBase .dbf

Как читать / писать файлы dBase III с помощью C # /. NET ODBC или OLE?

и, наконец, мой любимый источник строк подключения:

http://www.carlprothman.net/Default.aspx?tabid=81

0
ответ дан 2 September 2019 в 23:12
поделиться

Обычный OleDbConnection довольно хорошо обрабатывает DBF, если вы придерживаетесь очень простых операций SQL.

Здесь, где я работаю, мы создаем и поддерживаем приложения, которые взаимодействуют с DBF, используя исключительно классы OleDb. Однако мы не используем адаптеры или источники данных - все делается «напрямую» через OleDbCommands, OleDbDataReaders и так далее.

Возможно, адаптеры данных полагаются на функции, которые могут отсутствовать при взаимодействии с базовыми или устаревшими источниками данных, такими как xBase. Вы пробовали использовать UPDATE OleDbCommand?

0
ответ дан 2 September 2019 в 23:12
поделиться

Из вашего комментария о ~1GB базе данных, я тоже работаю с VFP базами данных (.dbf) форматов файлов, и SQL-Updates работает без проблем через создание / выполнение OleDbCommand, и может работать с любыми родными командами VFP OleDbProvider.

Для удаления некоторых символов я обычно использую функцию CHRTRAN() (то есть, если вы используете Visual Foxpro Ole DB Provider), где вы можете буквально удалить многие символы (такие как invalid), например...

Update YourTable
   set SomeField = chrtran( SomeField, "!@#$%^*(", "" )

пройдет по ВСЕМ записям и вычеркнет из поля (первый параметр) любой символ (2-й параметр) и заменит его на соответствующий символ, найденный в 3-м параметре... в данном случае нет значения, просто пустая строка, поэтому символы будут вычеркнуты. Само по себе это довольно быстро, и вам не нужно постоянно сканировать все записи, которые загружаются, проверяются и затем отталкиваются.

Опять же, не знаю, с какой родной файловой системой .DBF вы работаете, но VFP очень быстро справляется с такими манипуляциями.

1
ответ дан 2 September 2019 в 23:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: