![]() |
|
![]() ![]() ![]() |
|
ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 5 Всего: 23 |
Объясните, пожалуйста, как устроен механизм работы баз данных в C++ Builder. конкретно интересует метод работы методов First(), Next(), FieldByName(), Edit(). Post() и так далее.
Например, откуда Билдер знает какая запись первая и последняя. Или как он изменяет данные методом Edit и Post. Преобразует в SQL-запросы или в работе с драйверами существует данная информация о записях, которая посылается Билдеру и он обратно серверу БД в каком-то формате, отличном от SQL?. Если так, то где она хранится и что делать, если объем данных огромный. Билдер, что все хранит в оперативной памяти? Или в нем есть только архитектура файл-сервер. Что тогда делать с БД, хранящимися в сети? В общем, думаю, понятно сформулировал вопрос. |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 18 Всего: 135 |
Думаю сам билдер, вернее VCL, не делает ничего, кроме вызова функций API СУБД. А по поводу Edit и Post - не знаю как в interbase, но в oracle каждой записи присваивается уникальный ключ, даже если у тебя в таблице уже есть таковой. Затем когда тебе нужно отредактировать строку, компоненты работы с API oracle вызывают update и в where указывают этот ключ. Думаю в IB также
Это сообщение отредактировал(а) borisbn - 28.4.2010, 06:24 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
ИванМ, все в итоге сводится к SQL. Более того используя TTable и иже с ними теряется гибкость приложения, связанные с невозможностью использования SQL.
|
|||
|
||||
A5uKa |
|
|||
TЋ♥s F1rȜ iƧ BurȠiƞg ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 1928 Регистрация: 30.8.2008 Репутация: 2 Всего: 16 |
я не знаю точно стоит-ли это хвалить но мне нравится вот это sqlapi.com
|
|||
|
||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
||||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 18 Всего: 135 |
IMHO QtSql получше будет. Но это - кому что нравится. P.S. К тому же без шекелей ![]() -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 26 Всего: 459 |
Фундаментальным объектом в БД VCL является источник данных TDataSource . И таблица и SQL запрос оперирует именно им. Источник данных абстрагируется от технологии и предоставляет универсальный метод работы с данными где бы они не находились. Поскольку перебор записей последовательный, то тут может работать и кэширование и постепенная подгрузка данных (возможна реализация даже многопоточного доступа). Кроме того важной полезностью является то что результат это тип Variant т.е. исходные данные сохраняются в том формате в котором они хранятся в базе и не портятся самим движком и не тратиться время на конвертацию. Разве что только на копирование.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 5 Всего: 23 |
Т.е. все сводится к вызову функций SQL. Интересно, как тогда работают в БД такие языки как Prolog, в котором заместо SQL существует своя собственная система. И тем не менее они работают с драйверами ODBC. Получается, что они полностью должны загрузить БД и с ней работать. По-другому видимо никак.
Кто-нибудь может сказать что по этому поводу? |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 18 Всего: 135 |
Драйверы ODBC, насколько я знаю, работают через текстовое представление данных, а перевод из данных в текст и обратно есть в любом языке. SQL-запрос - это тоже текстовая строка, поэтому Prolog и общается с драйверами ODBC без проблем.
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 5 Всего: 23 |
Всем спасибо. Тему закрываю.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |