:: Visual Foxpro, Foxpro for DOS
Re: VFP и Firebird
_vit

Сообщений: 5173
Дата регистрации: 29.07.2002
PaulWist
Коннект, дисконнект - это тоже ресурсоемкие операции, поэтому создал соединени и пользуешься им.
ЗЫ правда возникает вопрос про живость соединения, тут уже могут быть варианты.

И если у сервера нет ограничений на число одновременных соединений.
Ratings: 0 negative/0 positive
Re: VFP и Firebird
DmitryKn
Автор

Сообщений: 300
Дата регистрации: 06.04.2022
PaulWist
Коннект, дисконнект - это тоже ресурсоемкие операции, поэтому создал соединени и пользуешься им.
ЗЫ правда возникает вопрос про живость соединения, тут уже могут быть варианты.

Можно же как-то проверять? Да и курсоры не наполнятся, если нет соединения, или перед самой транзакцией проверку делать?
Ratings: 0 negative/0 positive
Re: VFP и Firebird
DmitryKn
Автор

Сообщений: 300
Дата регистрации: 06.04.2022
_vit
PaulWist
Коннект, дисконнект - это тоже ресурсоемкие операции, поэтому создал соединени и пользуешься им.
ЗЫ правда возникает вопрос про живость соединения, тут уже могут быть варианты.

И если у сервера нет ограничений на число одновременных соединений.

А как узнать про ограничения на число одновременных соединений?
Ratings: 0 negative/0 positive
Re: VFP и Firebird
_vit

Сообщений: 5173
Дата регистрации: 29.07.2002
Это зависит от сервера БД и ОС на которой он крутится.
Ratings: 0 negative/0 positive
Re: VFP и Firebird
_vit

Сообщений: 5173
Дата регистрации: 29.07.2002
А практически, в цикле создавать соединения, пока сервер перестанет коннектится.
Ratings: 0 negative/0 positive
Re: VFP и Firebird
DmitryKn
Автор

Сообщений: 300
Дата регистрации: 06.04.2022
_vit
А практически, в цикле создавать соединения, пока сервер перестанет коннектится.

а надо это на 10-15 соединений делать? ФБ на Server 2008 неужели на десятки будет, а не на сотни?
Ratings: 0 negative/0 positive
Re: VFP и Firebird
PaulWist

Сообщений: 14601
Дата регистрации: 01.04.2004
Ограничение есть, каждое соединение - это память на поддержку соединения.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: VFP и Firebird
PaulWist

Сообщений: 14601
Дата регистрации: 01.04.2004
Ну как проверишь, выполнить тестовый запрос, так после него коннек может отвалиться


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: VFP и Firebird
DmitryKn
Автор

Сообщений: 300
Дата регистрации: 06.04.2022
PaulWist
Ну как проверишь, выполнить тестовый запрос, так после него коннек может отвалиться

так как же жить?

п.с. а файл-сервер не отваливается?



Исправлено 2 раз(а). Последнее : DmitryKn, 20.03.23 21:29
Ratings: 0 negative/0 positive
Re: VFP и Firebird
lemenev

Сообщений: 112
Дата регистрации: 23.06.2022
dimag
Книги есть, книги здесь: mega.nz

dimag, спасибо за хорошую библиотеку!
Ratings: 0 negative/1 positive
Re: VFP и Firebird
ssa

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
DmitryKn
PaulWist
Ну как проверишь, выполнить тестовый запрос, так после него коннек может отвалиться

так как же жить?
Молча! Даже у самых плохоньких их намного больше нужного тебе, не заморачивайся. А вообще значение сего параметра в доке на сервер указывается.

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: VFP и Firebird
PaulWist

Сообщений: 14601
Дата регистрации: 01.04.2004
DmitryKn
PaulWist
Ну как проверишь, выполнить тестовый запрос, так после него коннек может отвалиться

так как же жить?

п.с. а файл-сервер не отваливается?

Надо использовать клиентские транзакции


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: VFP и Firebird
_vit

Сообщений: 5173
Дата регистрации: 29.07.2002
ssa
Даже у самых плохоньких их намного больше нужного тебе, не заморачивайся. А вообще значение сего параметра в доке на сервер указывается.

Кроме физических ограничений могут быть и лицензионные.
Про FB не скажу а скажем для MS SQL при лицензионной модели Server + CAL,
зависит от числа приобретенных клиентских лицензий- CAL.
Будет приобретено две CAL вот только два пользователя или два устройства в зависимости от вида лицензии и смогут одновременно подключиться.

Так что при выборе стратегии держать коннект открытым или нет надо оценивать и сколько экземпляров такого приложения будет работать с сервером,
и с какими серверами оно потенциально будет работать.
Ratings: 0 negative/0 positive
Re: VFP и Firebird
DmitryKn
Автор

Сообщений: 300
Дата регистрации: 06.04.2022
Уважаемое сообщество!

прошу вас еще на эти вводные вопросы меня просветить:

1. Если мы делаем Remote View, подключение "на одну таблицу", значит ли это, что если подключиться к 10-ти таблицам будет использовано 10-ть подключений и взято соответственно ресурсов?
А если 1 подключение при входе в приложение - то 1-но соединение и хоть 100 КАД ?

2. Целостность данных в Фокс мы обеспечиваем установкой RI и триггерами, в ФБ применяется PK и FK, и наверное, триггеры, и все?

3.
PaulWist
Надо использовать клиентские транзакции
Это как?
В Фокс внесли изменения в курсор, далее:
begin tran
if tableupdate()
end tran
else
=Aerror(laError)
ROLLBACK
endif
Это клиентская транзакция? а в случае tablupdate ok будет отправлен send update в таблицу, а там, видимо свое будет.
И надо ли нам на курсоры КАД делать транзакцию в Фоксе, или просто tableupdate() , ведь уже не будет никаких RI и связей, я так понимаю.
Ratings: 0 negative/0 positive
Re: VFP и Firebird
PaulWist

Сообщений: 14601
Дата регистрации: 01.04.2004
DmitryKn

1. Если мы делаем Remote View, подключение "на одну таблицу", значит ли это, что если подключиться к 10-ти таблицам будет использовано 10-ть подключений и взято соответственно ресурсов?
А если 1 подключение при входе в приложение - то 1-но соединение и хоть 100 КАД ?

Да, одно подключение можно использовать на 100 КАДов/RV

DmitryKn

2. Целостность данных в Фокс мы обеспечиваем установкой RI и триггерами, в ФБ применяется PK и FK, и наверное, триггеры, и все?

Нет, ещё есть дефолты, правила поля/записи, ограничения (мож ещё чего - забыл)

DmitryKn

3.
PaulWist
Надо использовать клиентские транзакции
Это как?
В Фокс внесли изменения в курсор, далее:
begin tran
if tableupdate()
end tran
else
=Aerror(laError)
ROLLBACK
endif
Это клиентская транзакция? а в случае tablupdate ok будет отправлен send update в таблицу, а там, видимо свое будет.
И надо ли нам на курсоры КАД делать транзакцию в Фоксе, или просто tableupdate() , ведь уже не будет никаких RI и связей, я так понимаю.

Нет, для взрослых СУБД клиентская транзакция открывается

sqlsetprop(hnd, 'Transaction', 2)

Выполняется код

TableUpdate()

Затем, если ошибок не было, то транзакция закрывается

sqlcommit(hnd)

или же

sqlrollback(hnd)

Затем, лучше соединение перевести в состояние автоматической транзакции

sqlsetprop(hnd, 'Transaction', 1)


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: VFP и Firebird
DmitryKn
Автор

Сообщений: 300
Дата регистрации: 06.04.2022
Спасибо!

Ну и до кучи, общее:

в фоксе у меня была таблица сотрудники, форма "логин", и там логин-пароль, все время работы приложения пользователь запомнен в goApp.
А как это в подобных связках фокс-сервер строится? Сотрудники "живут" в таблице БД ФБ, чтобы запустить БД нужно проверить логин-пароль, которые в таблице в БД..



Исправлено 2 раз(а). Последнее : DmitryKn, 21.03.23 10:55
Ratings: 0 negative/0 positive
Re: VFP и Firebird
AndyNigmatec

Сообщений: 1550
Откуда: Волгоград
Дата регистрации: 28.06.2015
Доброго!

тот простецкий класс-обертку (что я выше выложил) сделан давно и на скорую руку, но как это часто бывает пользуюсь до сих пор )))
ниже кратко поясню с повыдерганными примерами из рабочего кода.

В него можно передать как готовую строку соединения так и отдельные параметры из которых он создаст эту строку, которые уже считывается с ini-файла при старте проги:

**************************
LOCAL loWorkIni, loDbConnect, lcIniFile
lcIniFile = ADDBS(_screen.cPathProgram)+oAppInformation.cAppName+'.ini'
loDbConnect = CREATEOBJECT("db_connect")
loWorkIni = CREATEOBJECT("work_ini")
loWorkIni.cFileName = lcIniFile
WITH loDbConnect
.db = loWorkIni.ReadFileIni('ini', 'database')
.user = loWorkIni.ReadFileIni('ini', 'user')
.pwd = loWorkIni.ReadFileIni('ini', 'pwd')
.driver = loWorkIni.ReadFileIni('ini', 'driver')
.charset = loWorkIni.ReadFileIni('ini', 'charset')
.dialect = INT(VAL(loWorkIni.ReadFileIni('ini', 'dialect')))
.CreateStringConnect()
_screen.cConnectionString = .cConnectionString
ENDWITH
RELEASE loWorkIni
вот выдрано:
this.oConnect=CREATEOBJECT("db_connect")
WITH this.oConnect
.cConnectionString=_screen.cConnectionString
* .AllowUseDbaConnect=_screen.AllowUseDbaConnect
.ShowError=0
.nUseTransaction=0
ENDWITH

в этом классе (кратко)
CreateStringConnect() - создает строку соединения из переданных параметров соединения (которые записываются в соответствующие свойства класса)
BaseIfConnect() - подключяется к БД под обычным пользователем (или проверяет подключение и переподключается при дохлом), при неудаче - пытается соединиться под SYSDBA если таковой флажок в классе выставлен (св-во - this.AllowUseDbaConnect=1)
BaseDisconnect() - отключение с коммитом
DbaBaseIfConnect() - подключение к БД под SYSDBA (админом), соответствующие dba_pwd и dba_user - свойства класса
BaseIdleDisconnect() - это обертка над SQLIDLEDISCONNECT()
SQLExec() - обертка над SQLEXEC() - это мало использую
ну SQLCommit(), SQLRollback() - думаю понятно по названию


Кстати, в FB все работает в рамках транзакций, любой запрос и т.п. Работая из фокса через ODBC c FB все точно также, только по умолчанию выполняется автокоммит каждого запроса, но можно переключить (установка - SQLSETPROP(this.nConnect,"Transactions",2) ) и на ручное(програмное) управление через команды SQLCommit/SQLRollback.
Думаю и в других серверах это также, но другие не пользовал - сказать точно не могу.



Исправлено 1 раз(а). Последнее : AndyNigmatec, 21.03.23 11:10
Ratings: 0 negative/1 positive
Re: VFP и Firebird
AndyNigmatec

Сообщений: 1550
Откуда: Волгоград
Дата регистрации: 28.06.2015
DmitryKn
в фоксе у меня была таблица сотрудники, форма "логин", и там логин-пароль, все время работы приложения пользователь запомнен в goApp.
А как это в подобных связках фокс-сервер строится? Сотрудники "живут" в таблице БД ФБ, чтобы запустить БД нужно проверить логин-пароль, которые в таблице в БД..

тут все просто: подключаетесь к БД под простым (созданным например только этого юзером с соотв. правами), считываете что нужно - и переподключаетесь уже с нужными параметрами.

У меня еще проще, тупо один юзер в рамках базы (кроме админа ессно), а права в проге разрулены на уровне логики самой проги. Правильнее наверное было делать это на уровне пользователей базы, но когда я переносил все на FB такой функционал уже был в логике проги и переделывать его тогда не стал, а потом и забил )))
Ratings: 0 negative/1 positive
Re: VFP и Firebird
DmitryKn
Автор

Сообщений: 300
Дата регистрации: 06.04.2022
Приветствую!
Спасибо!

А как научить таблицы запоминать коммент на русском? В описании языка комменты на русском, на практике русский текст преобразуется в '?', тогда как английский в норме
Ratings: 0 negative/0 positive
Re: VFP и Firebird
AndyNigmatec

Сообщений: 1550
Откуда: Волгоград
Дата регистрации: 28.06.2015
не совсем понял про какой коммент речь?

вот например табла:
[attachment 36512 distr.png]

про что говорим?
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 24 kornienko_ru  (Гостей: 23)

© 2000-2024 Fox Club 
Яндекс.Метрика