OberonCore https://forum.oberoncore.ru/ |
|
Базы данных https://forum.oberoncore.ru/viewtopic.php?f=5&t=37 |
Страница 1 из 1 |
Автор: | Cardinal [ Понедельник, 28 Ноябрь, 2005 18:25 ] |
Заголовок сообщения: | Базы данных |
Может кто-нибудь описать подключение базы данных ББ? Я пробовал, не получилось, делал так: 1. Панель управление / Администрирование / Источники данных (ODBC) 2. Закладка Пользовательский DNS / Добавить ... 3. Добавлял новое имя, драйвер dbase (Paradox тоже пробовал) Путь к стандартным базам данных от Delphi 7 - у меня такой: c:\program files\common files\borland shared\data 4. Запускаю в ББ в меню SQL Browser... В поле редактирования ввожу имя добавленного DSN, в поле запроса: select * from animals. Жму Execute. Появляется окно ODBC Error: "[Microsoft][Драйвер ODBC Paradox] Дополнительная возможность не реализована", после этого окна - другое "Объект Animals не найден ядром базы данных Microsoft Jet. Проверьте существование объекта и правильность имени и пути". |
Автор: | Cardinal [ Понедельник, 28 Ноябрь, 2005 18:36 ] |
Заголовок сообщения: | |
Дополню: в случае драйвера dBase IV - можно увидеть только заголовок таблицы, но данных нет. Версия dBase-V и все версии Paradox - не работают. В логе, как обычно - execution failed. |
Автор: | Илья Ермаков [ Понедельник, 28 Ноябрь, 2005 18:49 ] |
Заголовок сообщения: | |
Я с этим тоже помучился когда-то. Правда, использовал Access. А вот с MySQL все прекрасно работало. Я грешил на то, что Access сделан не по стандарту, как любит Microsoft... А решение оказалось простым: в поле Driver ввести не SqlOdbc, а SqlOdbc3 (это имена модулей-драйверов из подсистемы Sql), чтобы использовался протокол ODBC v.3 а не более ранний, который давно устарел. Вообще-то с БД у BlackBoxa все нормально. Используем постоянно, работает без всяких косяков. Если начнете использовать SqlControls, наткнетесь на проблему с кодировками при отображении русского текста. Проблему эту мы решили, скачайте наш Service Pack 2 с этого сайта - раздел "Компоненты". |
Автор: | Cardinal [ Понедельник, 28 Ноябрь, 2005 19:35 ] |
Заголовок сообщения: | |
Вы опередили меня минут на 5 ) . Я порылся в документации (спасибо Вашей фирме и за перевод) и нашел то решение, которое Вы уже описали - SqlOdbc3. А можно поподробнее об SqlControls (знаю пока только таблицу ), а то я совершенно не в курсе, что есть такое... |
Автор: | Илья Ермаков [ Понедельник, 28 Ноябрь, 2005 21:48 ] |
Заголовок сообщения: | |
А что там подробнее? Фабрика класса SqlControls.dir позволяет создавать элемент управления - таблицу, привязывая его к интерактору типа SqlDB.Table. Эта таблица показывает данные, позволяет менять размер столбцов и их выравнивание (по щелчку на имени столбца), отлавливает все клики и отсылает в свою процедуру уведомления. Можно создавать динамически - через SqlDB.dir.NewTable, а потом открывать возвращенный View через Views.OpenAux. А можно вызвать команду SqlCOntrols.DepositTable, таблица скопируется в буфер обмена. Затем положить ее на форму и привязать статически. Ну и еще там есть Anchor - это нечто, служащее для того, чтобы соединение с БД жило столько же, сколько и окно, а потом обрывалось. Т.е. проблемы "висячего указателя" в ББ быть не может, но сама сессия с БД жрет ресурсы. Этим я не пользовался. В документации олисывается. |
Автор: | Иван Кузьмицкий [ Понедельник, 02 Октябрь, 2006 11:10 ] |
Заголовок сообщения: | |
В продолжение темы. При закрытии модуля, использующего ODBC-подключение, срабатывает якорь, в Уведомителе которого стоит код Код: db := NIL; где тип переменной db объявлен как Код: db : SqlDB.Database;
И этот код заставляет весь BlackBox замереть секунд на 5-7, как я понимаю, для того, чтобы деактивировать подключение к БД. Кто-нибудь сталкивался с таким? Задержка довольно большая, доставляет дискомфорт. |
Автор: | Илья Ермаков [ Понедельник, 02 Октябрь, 2006 14:28 ] |
Заголовок сообщения: | |
А какое отношение имеет "закрытие модуля" к "якорю с уведомителем"? В смысле, при закрытии формы, на которой лежит якорь? Я с такой задержкой не сталкивался, поскольку закрывал коннект с базой обычно только при выходе из приложения. |
Автор: | Иван Кузьмицкий [ Понедельник, 02 Октябрь, 2006 17:32 ] |
Заголовок сообщения: | |
Ну не сказать же "приложение", когда мы имеем дело с компонентным каркасом BB Я, пожалуй, неверно выразился - модуль не "закрывается", а завершает работу при нажатии кнопки на форме. В этот же момент срабатывает Уведомитель, который инициирует сборку мусора. Я немного поэкспериментировал, чёткой зависимости зависания от момента сборки пока не отследил (недопонимаю, видать), но определённо могу сказать, что комбинация Код: db := NIL;
Kernel.Cleanup; приводит к подвисанию BB на 5-7 сек. Причём если отказаться от Kernel.Cleanup, то форма закрывается моментально, но зато при очередной попытке откомпилировать модуль происходит это же зависание. |
Автор: | Илья Ермаков [ Вторник, 03 Октябрь, 2006 01:36 ] |
Заголовок сообщения: | |
Ну да, определенно дисконнект жрет время... Но так ли этот дисконнект (и якорь) нужен? |
Автор: | Иван Кузьмицкий [ Вторник, 03 Октябрь, 2006 12:41 ] |
Заголовок сообщения: | |
Илья Ермаков писал(а): Ну да, определенно дисконнект жрет время... Но так ли этот дисконнект (и якорь) нужен?
Якорь, согласен, не особо нужен, всё можно делать ручками. Но дисконнект - как же не нужен? Пусть один раз будет, при закрытии приложения. Я о том, что тормоза при дисконнекте выглядят как-то... ненормально, что ли... Хотя на других компах не проверял, возможно, это такая особенность конфигурации моей системы |
Автор: | Илья Ермаков [ Вторник, 03 Октябрь, 2006 13:26 ] |
Заголовок сообщения: | |
Я не думаю, что это оверхед Блэкбокса. Скорее всего, особенность поведения ОДБЦ-драйвера базы на конкретной машине. В моих приложениях можно выходить и выполнять повторный коннет под другим логином - тормозов не было. СУБД - МайСиквель 4-й... |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |