|
|
|
Java + JDBC/ODBC DBF
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, уважаемые коллеги. Требуется Ваша помощь. Использую связку java + DBF (Visual Fox Pro) в десктопном приложении. Наблюдается следующий странный эффект: при выборке из таблицы размером ~200 Мб с медленного сетевого диска некоторые строки в ResultSet дублируются! Причём если запускать выборку под отладчиком и делать все по шагам, то данные получаются корректные(не дублируются) из чего можно предположить, что драйвер FoxPro как-то странно подтягивает данные. Подскажите что это может быть за глюк и как его победить. Просьба не предлагать сменить старый убогий DBF на какой-нибудь нормальную СУБД, т.к. в ТЗ именно DBF причём с поддержкой CDX. Заранее спасибо за конструктивные ответы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2012, 16:25:39 |
|
||
|
Java + JDBC/ODBC DBF
|
|||
|---|---|---|---|
|
#18+
Чёрный МедведьИспользую связку java + DBF (Visual Fox Pro) в десктопном приложении. Очевидно ODBC? Не пробовали использовать какие-нибудь JDBC драйвера для DBF? Они есть разные, можно эксперементальным путём подобрать более правильные для вашего случая. Так же у разных драйверов есть разные возможности по оптимизации настроек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2012, 16:29:19 |
|
||
|
Java + JDBC/ODBC DBF
|
|||
|---|---|---|---|
|
#18+
Чёрный Медведь, написать сюда минимальный тест с CountRecord1<>Count2. Оно ведь будет разным? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2012, 16:30:49 |
|
||
|
Java + JDBC/ODBC DBF
|
|||
|---|---|---|---|
|
#18+
Да мост ODBC-JDBC. Выбор пал на него из-за необходимости использовать CDX индексы, т.к. ни один бесплатный DBF драйвер эту хрень не поддерживает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2012, 16:35:05 |
|
||
|
Java + JDBC/ODBC DBF
|
|||
|---|---|---|---|
|
#18+
Petro123, не понял. Поясните пожалуйста что Вы имели ввиду? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2012, 16:35:50 |
|
||
|
Java + JDBC/ODBC DBF
|
|||
|---|---|---|---|
|
#18+
Вот что странно ещё, задержка в текущем потоке 5 сек решает проблему на моей машине. Но в принципе это никого не устроит, так как программа будет использоваться в более чем 50-ти местах на совершенно разных компьютерах и сетях. Так что такое шаманство не подходит. Пичалька... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2012, 16:38:53 |
|
||
|
Java + JDBC/ODBC DBF
|
|||
|---|---|---|---|
|
#18+
Чёрный МедведьPetro123, не понял. Поясните пожалуйста что Вы имели ввиду? дубли строк меняют RecordCount в ResultSet? Пример нужен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2012, 16:48:22 |
|
||
|
Java + JDBC/ODBC DBF
|
|||
|---|---|---|---|
|
#18+
Чёрный Медведь, он очень глючный, мы с ним мучились, мучились, в итоге отказались как рекомендация: проверьте что у вас стоит самая последняя версия драйвера, нам частично помогло скачивание с сайта макрософта последних версий (стало лучше, но все равно глючило). к чему в итоге пришли мы: c помощью com.linuxense.javadbf читали dbf файл во временную таблицу в нормальной субд (DB2 в нашем случае) и затем уже строили индексы и производили обработку данных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2012, 16:53:54 |
|
||
|
Java + JDBC/ODBC DBF
|
|||
|---|---|---|---|
|
#18+
Petro123, ок. Надеюсь что код что-нибудь прояснит. Запрос такой: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Выборка осуществляется так: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2012, 17:01:43 |
|
||
|
Java + JDBC/ODBC DBF
|
|||
|---|---|---|---|
|
#18+
Alexey Kuznetsov, спасибо за совет. Такой возможности нет, так как эта утилитка должна работать СОВМЕСТНО со старым "добрым" ПО, которому 20 лет уже. Вот такие дела... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2012, 17:02:50 |
|
||
|
Java + JDBC/ODBC DBF
|
|||
|---|---|---|---|
|
#18+
Чёрный Медведь Код: java 1. - узнай точно сколько строк - в коде поставь проверку на ЭТО количество - выведи НЕсоответствие или соответствие по этому критерию. Насколько помню RecordCount там есть ЗЫ потоки УБЕРИ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2012, 17:35:18 |
|
||
|
Java + JDBC/ODBC DBF
|
|||
|---|---|---|---|
|
#18+
Petro123, спасибо за пристальное внимание к моему вопросу. Тест показал, что количество строк всегда одинаковое. Проверить это оказалось несложно так как имеются отладочные таблицы, куда я вывожу данные в удобном для контроля виде. Т.е. разница именно в нескольких ПЕРВЫХ строках. Если иду медленно по шагам, то всё в порядке, иначе первые строки это данные откуда-то из середины ResultSet'а. Такое ощущение, что я дважды по какому-то фрагменту курсора прохожу. Однако, на глаза мне попалась страничка http://www.connectionstrings.com/visual-foxpro#89 на которой в разделе Bridging to Microsoft Visual FoxPro ODBC Driver указана строка подключения с параметром BACKGROUNDFETCH=NO . Уважаемые коллеги, поправьте меня если я неправ, но мне кажется, что по умолчанию драйвер тащит данные в отдельном потоке, и в моём случае он делает это некорректно, вследствие чего я прохожу по курсору дважды. Я установил этот параметр в NO и проблема решилась. По крайней мере первые тесты прошли успешно. Всем откликнувшимся большое спасибо за потраченное время. Надеюсь, что не придётся возвращаться к этой беде ещё раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2012, 17:52:28 |
|
||
|
Java + JDBC/ODBC DBF
|
|||
|---|---|---|---|
|
#18+
Чёрный МедведьДа мост ODBC-JDBC. Выбор пал на него из-за необходимости использовать CDX индексы, т.к. ни один бесплатный DBF драйвер эту хрень не поддерживает. HXTT DBF Drivers for Xbase Database вроде поддерживает такие индексы, но он платный. Можно для любого бесплатного сделать собственную обработку CDX индексов их описание есть . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2012, 08:46:40 |
|
||
|
Java + JDBC/ODBC DBF
|
|||
|---|---|---|---|
|
#18+
Чёрный МедведьAlexey Kuznetsov, спасибо за совет. Такой возможности нет, так как эта утилитка должна работать СОВМЕСТНО со старым "добрым" ПО, которому 20 лет уже. Вот такие дела... А такую штуку видели? wiki ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2012, 08:51:41 |
|
||
|
Java + JDBC/ODBC DBF
|
|||
|---|---|---|---|
|
#18+
Garrick HXTT DBF Drivers for Xbase Database вроде поддерживает такие индексы, но он платный. Ну так и я о том же, платный не подходит по понятным причинам. Garrick Можно для любого бесплатного сделать собственную обработку CDX индексов их описание есть . Можно, кто спорит, но мне никто не даст время на разработку и отладку такой специфической вещи как поддержка CDX индексов в чьём-то чужом драйвере, который ещё нужно грамотно выбрать. Т.е. нужен был проверенный готовый продукт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2012, 09:20:43 |
|
||
|
Java + JDBC/ODBC DBF
|
|||
|---|---|---|---|
|
#18+
GarrickА такую штуку видели? wiki Спасибо, что делитесь интересной информацией по новым проектам, но новый клиппероподобный язык - это не для нашей компании и не для меня в частности. У нас придерживаются определённых правил в выборе средств разработки, никто из моих коллег не будет изучать клиппер только потому, что в сети появился новый компилятор и я вдруг решил на нём писать. Однако, многие думаю будут рады такому продукту, так как народ ещё пишет ПО и на FoxPro и на clipper. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2012, 09:27:49 |
|
||
|
|

start [/forum/topic.php?fid=59&gotonew=1&tid=2132683]: |
0ms |
get settings: |
16ms |
get forum list: |
26ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
66ms |
get topic data: |
24ms |
get first new msg: |
15ms |
get forum data: |
5ms |
get page messages: |
104ms |
get tp. blocked users: |
3ms |
| others: | 331ms |
| total: | 602ms |

| 0 / 0 |
