Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
SaVCL. Как расшарить коннект?
|
|||
|---|---|---|---|
|
#18+
Вот подумываю, не пора ли сменить старушку-BDE на что-нибудь посовременнее :) Посматриваю в сторону ADO либо SaVCL. Попробовал поставить SaVCL поиграться и сразу возник вопрос: как обеспечить работу из exe и dll с базой через единый коннект? При помощи BDE это делалось элементарно. Если dll и exe скомпилированы в одной версии Delphi, то достаточно было у всех TDataBase поставить HandleShared = true и прописать одинаковый DatabaseName. Если разные версии Delphi - то можно было достучаться до BDE-Handle и насильно его использовать. А как с этим в SaVCL? P.S. оффтопик, конечно, но вопрос до кучи: может кто знает как подобную проблему в ADO решить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2005, 19:20 |
|
||
|
SaVCL. Как расшарить коннект?
|
|||
|---|---|---|---|
|
#18+
В dll достаточно из exe передать указатель на открытый TSaDb и использовать его как будто он создан и открыт в самой dll. У нас так работают exe, где находятся все интерфейсные функции, и dll, где лежат отчеты. С уважением, Сергей Гаврилов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2005, 14:25 |
|
||
|
SaVCL. Как расшарить коннект?
|
|||
|---|---|---|---|
|
#18+
Сергей Гаврилов пишет: > В dll достаточно из exe передать указатель на открытый TSaDb и > использовать его как будто он создан и открыт в самой dll. У нас так > работают exe, где находятся все интерфейсные функции, и dll, где лежат > отчеты. А если DLL и EXE сделаны в разных версиях Delphi или например в Delphi и C++Builder? Не очень красивый и удобный способ. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2005, 14:43 |
|
||
|
SaVCL. Как расшарить коннект?
|
|||
|---|---|---|---|
|
#18+
nativedb ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2005, 14:50 |
|
||
|
SaVCL. Как расшарить коннект?
|
|||
|---|---|---|---|
|
#18+
Вот это вопрос интересный... Знаю точно, что сделать это не так сложно (доработав SaVcl). Постараюсь сделать. С уважением, Сергей Гаврилов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2005, 14:54 |
|
||
|
SaVCL. Как расшарить коннект?
|
|||
|---|---|---|---|
|
#18+
Сергей Гаврилов пишет: > Вот это вопрос интересный... Знаю точно, что сделать это не так сложно > (доработав SaVcl). Постараюсь сделать. Это было бы весьма интересно. У соединения с базой ASA есть какой-нибудь Handle, аналогичный тому, который используется в BDE? Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2005, 15:17 |
|
||
|
SaVCL. Как расшарить коннект?
|
|||
|---|---|---|---|
|
#18+
Да, конечно, нечто похожее есть. Структура SQLCA. Собственно расшарить коннект в SaVcl - это передать указатель на эту структуру + несколько указателей на экспортированные функции из клиентских dll. Все это можно засунуть в одну структуру и указатель на нее передавать между dll и exe. С уважением, Сергей Гаврилов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2005, 15:26 |
|
||
|
SaVCL. Как расшарить коннект?
|
|||
|---|---|---|---|
|
#18+
Сергей Гаврилов пишет: > Собственно расшарить коннект в SaVcl - это передать указатель > на эту структуру + несколько указателей на экспортированные > функции из клиентских dll. Все это можно засунуть в одну структуру > и указатель на нее передавать между dll и exe. Не мне учить, как это сделать, просто выскажу свои соображения. Наводит на мысли то, что и exe и все dll в приложении независимо от версии Delphi или билдера используют, очевидно, один и тот же экземпляр sadll*0.dll. Возможно в ней можно хранить некий контекст коннекта. Компонент TSaDb должен иметь возможность как создать новый коннект, так и подключиться к существующему уже созданному. Крайне желательно иметь возможность держать несколько таких контекстов и идентифицировать их, например по некоему имени, задаваемому в свойствах. Если коннекта с указанным именем еще нет, то создается, если есть - используется. Такой вариант был бы идеальным IMHO и не требовал бы снабжения exe и dll приложения дополнительными механизмами обмена указателям. Особенно это актуально, если одна и та же DLL может использоваться разными EXE. Еще один момент, на который стоит обратить внимание. При уничтожении компонента TSaDb или при его деактивации коннект не должен рваться, если есть еще активные подключенные компоненты. Может это и очевидно, но когда я игрался с ADO и пробовал для TAdoConnection расшаривать соединение через ConnectionObject, мне не удалось штатно удалить этот объект (например закрытием формы), не закрыв при этом соединение с базой при наличии других подключенных TAdoConnection. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2005, 15:45 |
|
||
|
SaVCL. Как расшарить коннект?
|
|||
|---|---|---|---|
|
#18+
Интересно, по этой теме что-то планируется сделать в SaVCL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2006, 14:10 |
|
||
|
SaVCL. Как расшарить коннект?
|
|||
|---|---|---|---|
|
#18+
Да, чуть-чуть осталось :) С уважением, Сергей Гаврилов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 15:41 |
|
||
|
SaVCL. Как расшарить коннект?
|
|||
|---|---|---|---|
|
#18+
На http://savcl.narod.ru новая верия SaVcl. Выписка из help: property SharedName : string; Используя свойство SharedName Вы можете создавать в приложении и динамических библиотеках (dll) несколько экземпляров TSaDb с одим физическим подключением к базе данных. Экземпляры TSaDb с одним и тем же именем в свойстве SharedName используют одно общее подключение, которое создается при активации любого из экземпляров и остается активным до тех пор, пока активен хотя бы один из них. Параметры соединения могут быть заданы только в одном экземпляре TSaDb, который должен быть активирован раньше других. Экземпляры TSaDb с одинаковыми именами в SharedName должны принадлежать одному потоку. С уважением, Сергей Гаврилов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2006, 19:13 |
|
||
|
SaVCL. Как расшарить коннект?
|
|||
|---|---|---|---|
|
#18+
Сергей Гаврилов пишет: > На http://savcl.narod.ru новая верия SaVcl. > > Выписка из help: > > property SharedName : string; Вот здорово! Займусь тестированием. О результатах доложу. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2006, 09:49 |
|
||
|
SaVCL. Как расшарить коннект?
|
|||
|---|---|---|---|
|
#18+
Тут замечания по обнаруженным проблемам можно писать? Скачал, установил в Delphi 7 (Build 8.1) Создаю новый Application Кидаю на форму SaDb Задаю в свойствах: Agent saNetwork databasename devel servername IT Links slTCPIP UId и PWD - dba sql Больше ничего. Пробую сделать Active - в результате Delphi молча срубается. Вторая попытка Задаю все то же самое плюс дополнительно: SaVersion sa90 и прописываю SaSysDllPath При попытке поставить Active ругается DLL Initialization error: sadll90.dll. Error code: -3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2006, 11:53 |
|
||
|
SaVCL. Как расшарить коннект?
|
|||
|---|---|---|---|
|
#18+
Извиняюсь, трабл обнаружен у меня - в путях PATH нашлась старая версия sadll70.dll. Теперь нормально все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2006, 11:56 |
|
||
|
SaVCL. Как расшарить коннект?
|
|||
|---|---|---|---|
|
#18+
Попробовал. Пока прекрасно работает - проверил между exe на Delphi 7 и dll на CBuilder 6. В хелпе стоит упомянуть, что для расшаривания надо еще обязательно выставить одинаковое значение SaVersion. Кстати, может стоит сделать отдельные bpk для разных версий дельфи-билдера? Впрочем, это непринципиально. Я вручную переименовал в SaVclD7 и SaVclCB6 Еще вопрос из любопытства. Может кто-нибудь знает способ, как вытащить указатель на SQLCA для коннекта, сделанного через ODBC-BDE? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2006, 14:22 |
|
||
|
SaVCL. Как расшарить коннект?
|
|||
|---|---|---|---|
|
#18+
Александр ГoлдунЕще вопрос из любопытства. Может кто-нибудь знает способ, как вытащить указатель на SQLCA для коннекта, сделанного через ODBC-BDE?Вряд ли это возможно. В ODBC хендл коннекта это указатель на внутреннюю ODBC структуру. Вряд ли dblib использует точно такую-же структуру :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2006, 19:39 |
|
||
|
SaVCL. Как расшарить коннект?
|
|||
|---|---|---|---|
|
#18+
White Owl Александр ГoлдунЕще вопрос из любопытства. Может кто-нибудь знает способ, как вытащить указатель на SQLCA для коннекта, сделанного через ODBC-BDE?Вряд ли это возможно. В ODBC хендл коннекта это указатель на внутреннюю ODBC структуру. Вряд ли dblib использует точно такую-же структуру :) Разумеется, структуры разные. Но способ получения, возможно, все-таки есть, вопрос только в том, насколько он геморройный. Если бы удалось его получить, была б вообще сказка - миграцию с BDE-ODBC на SaVCL можно было бы делать постепенно и безболезненно, расшарив между ними общий единый коннект. Задал вопрос на эту тему в sybase.public.sqlanywhere.general. Посмотрим, может там кто-нибудь подскажет что-то дельное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2006, 11:57 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=33371420&tid=2013049]: |
0ms |
get settings: |
12ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
61ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
| others: | 248ms |
| total: | 429ms |

| 0 / 0 |
