powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / SQLCONNECT
13 сообщений из 13, страница 1 из 1
SQLCONNECT
    #38801340
miv32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Озадачился таким вопросом.

Как лучше управлять количеством соединений?
У меня вначале создается

PUBLIC pnConnHandle

pnConnHandle = SQLSTRINGCONNECT(lcDSN,.T.)

Потом я получаю lnconnection = SQLCONNECT(pnConnHandle)
Но форм много, часть модальные, где-то курсорадаптеры.

Использовать один lnconnection и передавать его в формы как параметр?
Или (собственно как сейчас) я создаю в модальной форме новый
lnconnection = SQLCONNECT(pnConnHandle) и потом его в unload формы прибиваю
SQLDISCONNECT-ом?
...
Рейтинг: 0 / 0
SQLCONNECT
    #38801521
Фотография descent52
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miv32, коннект делаешь один раз и этого достаточно.
В главной программе, та что черненькая в проекте (и первый запуск приложения происходит оттуда), объявляешь Public pnConnHandle. В нужном месте (например после проверки пароля на вход) делаешь подключение pnConnHandle = SQLSTRINGCONNECT(lcDSN,.T.) один раз и забываешь про SQLSTRINGCONNECT. А дальше используешь только SQLExec(pConnectionHandle,"бла бла бла","имя курсора"). А SQLDISCONNECT используешь при выходе из программы.
Использовать pnConnHandle = SQLSTRINGCONNECT(lcDSN,.T.) каждый раз, когда тебе надо какие то данные выбрать не надо, следовательно и SQLDISCONNECT потом делать не надо.
...
Рейтинг: 0 / 0
SQLCONNECT
    #38801539
miv32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это понятно.
stringconnect и сделан один раз. :)
Вопрос то о другом...

Сколько можно плодить "дочерних" коннектов?
...
Рейтинг: 0 / 0
SQLCONNECT
    #38801552
Фотография descent52
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miv32, а для чего плодить то? Какой смысл в ОДНОМ приложении плодить одно и то же подключение? Или у Вас несколько разных таблиц (например, 5 файлов *.gdb или *.fbd) и для разных форм Вы их подключаете и чего то там с ними мудрите?
...
Рейтинг: 0 / 0
SQLCONNECT
    #38801572
Фотография descent52
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQLSTRINGCONNECT([lShared] | [cConnectString [, lSharable]]) - Устанавливает Соединение с Источником Данных используя строку параметров Соединения.

SQLEXEC(nStatementHandle [, cSQLCommand [, cCursorName[, aCountInfo]]]) - Передает команду SQL удаленному Источнику Данных (Серверу), где данная команда обрабатывается.

SQLDISCONNECT(nStatementHandle) - Закрывает Соединение с удаленным источником Данных .


Зашел в программу, создал подключение SQLSTRINGCONNECT, дальше в программе используешь SQLEXEC, перед выходом из программы SQLDISCONNECT.
...
Рейтинг: 0 / 0
SQLCONNECT
    #38801619
miv32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну вот смотри, для примера.
Есть главная форма с гридом, для которого источник данных получен через sqlconnect
Вызываем модальную форму с передачей параметров для редактирования.
В модальной форме я должен получить курсор опять-таки через sqlconnect.
Спрашивается, получать новый хендл или из главной формы его тянуть?
...
Рейтинг: 0 / 0
SQLCONNECT
    #38801646
Фотография descent52
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miv32Ну вот смотри, для примера.
В модальной форме я должен получить курсор опять-таки через sqlconnect.
Спрашивается, получать новый хендл или из главной формы его тянуть?

Хорошо, что пример написал. Я Вас понял. )))
Чтобы получать курсоры в модальной форме (да и в любой последующей) НЕ НАДО снова и снова использовать sqlconnect. Не надо!!! Подключение уже есть к твоему источнику данных, т.е. к таблице *.gdb или *.fbd (оно создалось вот тут pnConnHandle = SQLSTRINGCONNECT(lcDSN,.T.)).
И это подключение НЕ НАДО КАЖДЫЙ РАЗ пересоздавать!!! Его делаешь один раз и всё! Т.е. получать новый хендл не надо!
Просто при Init-событии модальной формы, чтобы получить курсор используешь команду SQLExec(pnConnHandle,"select * from table1","name_cursor"). После этой команды создастся курсор name_cursor с данными из таблицы table1.
А дальше
Код: sql
1.
2.
select name_cursor
browse
...
Рейтинг: 0 / 0
SQLCONNECT
    #38801684
miv32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для простого селекта это может и хорошо.
А для CursorAdaptera? А если их несколько?
А если пока в один курсор записи еще фетчаться, а в друм надо работать?
Пока фетчаться в один, соединение как известно занято.

Вот поэтому pnConnHandle = SQLSTRINGCONNECT(lcDSN,.T.) делается один раз.

А SQLCONNECT(pnConnHandle) - можно много, для каждого CA.
...
Рейтинг: 0 / 0
SQLCONNECT
    #38801748
Ffffffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miv32,
а ты уверен, что их физически получается несколько?
...
Рейтинг: 0 / 0
SQLCONNECT
    #38801783
miv32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не уверен, поэтому и спрашиваю.
Но каждый новый SQLCONNECT(pnConnHandle) создает свой номер

q = SQLCONNECT(pnConnHandle)
w = SQLCONNECT(pnConnHandle)

? q
? w

Разные.
...
Рейтинг: 0 / 0
SQLCONNECT
    #38801877
Fffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скорей всего, они только внутри твоей программы разные, а в пуле соединений снова объединяются в один. Поэтому смысла нет.
...
Рейтинг: 0 / 0
SQLCONNECT
    #38802161
FAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fffffffffff,

нет. Они физически разные. Есть команда Prepare.
Посмотри. Тогда поймешь, сколько коннектов тебе надо. Может 1, может сотни открывающихся и закрывающих
...
Рейтинг: 0 / 0
SQLCONNECT
    #38802197
miv32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тут речь конечно о сотнях не идет. :)
Думаю проще в модальной форме создавать коннект и потом его закрывать, чем из родительской формы тянуть его как параметр.
Один фиг, получил параметр - надо его проперте присваивать.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / SQLCONNECT
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]