С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.95/88: Рейтинг темы: голосов - 88, средняя оценка - 4.95
Lord_Voodoo
Супер-модератор
8611 / 2248 / 133
Регистрация: 07.03.2007
Сообщений: 10,840
Завершенные тесты: 1
1

Работа с методами Open и ExecSQL

28.05.2011, 11:21. Просмотров 16108. Ответов 0
Метки нет (Все метки)

Честно скажу, устал повторять каждому второе одно и тоже, решил это все описать... и так в каких случаях используются методы ExecSQL (для некоторых классов Execute - PgDAC к примеру) и Open... Решение, как это не парадоксально, лежит на поверхности: жмем кнопку F1 (вторая кнопка в верхнем ряду клавиатура, по соседству с ESC) и читаем про эти методы... а написано там следующее:
void __fastcall Open(void); - Opens the dataset.

Description

Call Open to set the Active property for the dataset to true. When Active is true, data can be populated with data. It can read data from a database or other source (such as a provider). Depending on the CanModify property, active datasets can post changes.

Setting Active to true:

Triggers the BeforeOpen event handler if one is defined for the dataset.
Sets the dataset state to dsBrowse.
Establishes a way to fetch data (typically by opening a cursor).
Triggers the After Open event handler if one is defined for the dataset.

If an error occurs during the dataset open, dataset state is set to dsInactive, and any cursor is closed.
void __fastcall ExecSQL(void); - Executes the SQL statement for the query.

Description

Call ExecSQL to execute the SQL statement currently assigned to the SQL property. Use ExecSQL to execute queries that do not return a cursor to data (such as INSERT, UPDATE, DELETE, and CREATE TABLE).

Note: For SELECT statements, call Open instead of ExecSQL.

ExecSQL prepares the statement in SQL property for execution if it has not already been prepared. To speed performance, an application should ordinarily call Prepare before calling ExecSQL for the first time.
Выбираем ключевые для нас цитаты:
Use ExecSQL to execute queries that do not return a cursor to data (such as INSERT, UPDATE, DELETE, and CREATE TABLE).
Note: For SELECT statements, call Open instead of ExecSQL.


для ленивых еще и переводчик использовать перевожу дословно:
Используйте ExecSQL для выполнения запросов, не возвращающих курсоры на данные (такие как INSERT, UPDATE, DELETE, and CREATE TABLE).
Для запроса SELECT вызывается Open вместо ExecSQL.

Отсюда вопрос, откуда появилась комбинация методов:
C++
1
2
Query->ExecSQL();
Query->Open();
19
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2011, 11:21
Ответы с готовыми решениями:

OraQuery1->ExecSQL Ошибка
Всем добрый вечер, ребята помогите разобраться есть программа с которой в базу...

Параметризированный запрос к FireDAC ExecSQL
Здравствуйте, помогите разобраться как передать параметры в запрос. Например...

[ILINK32 Error] Fatal: Could not open .\Debug\Win32\Variant_1.ilf (project already open in IDE?)
Fatal: Could not open .\Debug\Win32\Variant_1.ilf (project already open in...

проблема с функцией ExecSQL (Too many open tables)
Люди помогите в следующем. Использую Delphi 7, система Windows 7. Есть SQL...

Работа с методами
Не получается разобраться с заданием, прошу помощи: -Написать static void...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2011, 11:21

Работа с методами!
Доброго времени суток уважаемые эрудиты! Вопрос такой: -У меня есть метод...

Работа с методами
Необходимо создать метод, который определяет количество заданных букв в...

Таймер для Query.ExecSQL
Как реализовать сабж? Точнее для меня главная проблема, это узнать когда...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Закрытая тема Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru