|
|
|
Подскажите драйвер для работы с DBF в Java
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток! Ищу что-нибудь адекватное и свободное для работы с DBF в Java. Потребности: 1. Свободный продукт; 2. Возможность выполнять SQL-запросы к файлу; 3. Возможность читать и писать (создавать новые dbf-файлы и дописывать в существующие) 4. Желательно возможность работать с заранее неизвестными структурами таблиц. 1. Итак, под свободным я понимаю продукты, которые можно бесплатно использовать в своём приложении с полным функционалом, т.е. они не выдают подобных сообщений: "(Trial version) Trial limitations: 1) The trial version allows executing of not more than 50 queries at once. 2) SELECT queries return the first 1000 records in the result set." 2. Пробовал javadbf-0.4.0 - но там он вообще не умеет делать запросы к dbf-файлу. Только построчный и поячеичный перебор всего, когда можно было бы просто указать "Where field1 = 5" или "select distinct field1 from file.dbf" - приходится полностью прокручивать всё это дело ручками, что очень сильно сказывается на производительности приложения. Кроме того, здесь ещё один косяк - при сохранении dbf-файла он заменяет десятичные разделители запятыми, когда должны быть точки, и для dbf-формата это очень критично. Может, конечно, у меня ещё руки не до конца выпрямились, я этого не отрицаю, и если это так - буду очень признателен за подсказки, как это дело исправить (я имею в виду и десятичные разделители и sql-запросы). 3. Возможность читать и писать в файлы - тут я имею в виду желательно, конечно, иметь возможность читать из DBF и писать в DBF-файл с помощью sql-запросов, ну или хотя бы как-нибудь, просто основная задача - резать большие DBF-файлы на кучу маленьких по определённым значениям полей. 4. Форматы исходных DBF-файлов бывают разные, и часто меняются, поэтому не очень хотелось бы каждый раз править исходники, пересобирать и расставлять юзерам по-новой. Поэтому драйвера, работающие только по следующему принципу - крайне не желательны: DBF dbf = new DBF(); Field f1 = new Field(); f1.setType("N"); f1.setLength(9); dbf.add(f1); Т.е. я имею в виду, что создание объектов на уровне кода не очень удобно, т.к. заранее не известно, сколько полей в базе. Гораздо более приемлемый способ - это сначала считать все поля в массив, вывести юзеру на форму, и он уже сам укажет, какие поля ему добавить, т.е.: DBF dbf = new DBF("file.dbf"); List<Field> fields = new ArrayList<Field>(); for(int i = 0; i<dbf.fieldsCount(); i++) { fields.add(dbf.fields[i].getField()); } И последующее создание файла DBF в соответствии с этим списком полей fields: DBF dbf = new DBF("file.dbf"); dbf.setFields(fields); Query.... while((Object row = Query.next()) != null) { dbf.addRecord(row); } В общем, если кто сталкивался жду ответов или вопросов для уточнения каких-либо нюансов. PS. Эти примеры - весьма условны, они могут содержать синтаксические ошибки и прочее, я просто хотел показать способ реализации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2011, 09:39 |
|
||
|
Подскажите драйвер для работы с DBF в Java
|
|||
|---|---|---|---|
|
#18+
HXTT DBF Pure Java JDBC (1.2, 2.0, 3.0, 4.0) Drivers for Xbase Database Оно, правда, стоит денег. PS. Я этот софт пользовал лет пять назад. Вроде были какие-то проблемки, но в целом, помню, остался доволен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2011, 19:28 |
|
||
|
|

start [/forum/topic.php?fid=56&fpage=13&tid=2015490]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
37ms |
get tp. blocked users: |
2ms |
| others: | 29ms |
| total: | 152ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...