Энциклопедия C++ Builder



         

ВИЗУАЛЬНАЯ РАЗРАБОТКА ПРИЛОЖЕНИЙ БАЗ ДАННЫХ - часть 16


try

{

Query 1 ->0pen(); // выполнить команду SQL }

catch(EDBEngineError* dbError) //

обработка ошибок BDE (

for (int i=0; i<dbError->ErrorCount; i++)

MessageBox(0, dbError[i].Message.c_str(), "SQL Error", MB_OK) ;

} }

Листинг 5.6. Соединение запроса с таблицей по событию источника.

Для динамического формирования текста командной строки SQL во время исполнения программы удобно использовать стандартную функцию Windows sprintf. Эта функция замещает параметры форматирования (%s, %d, %n и т.д.) передаваемыми значениями, например, в результате подстановки значений параметров форматирования:

tbIName = "EMPLOYEE";

fIdName = "EmpNo";

fIdValue = 3;

sprintf(sqls, "SELECT * FROM %s WHERE %s = %d", tbIName, fIdName, fIdValue)

символьный массив sqls будет содержать следующую команду:

"SELECT * FROM EMPLOYEE WHERE EmpNo =3"

Листинг 5.7 иллюстрирует применение функции sprintf для

формирования команды SELECT динамического запроса к таблице EMPLOYEE.

Методы Clear и Add используются для занесения этой команды в свойство SQL. Поскольку подготовленный запрос использует ресурсы сервера и нет никакой гарантии, что новый запрос будет работать с данными одной и той же таблицы, C++Builder снимает готовность при любом изменении свойства SQL (т.е. устанавливает значение false свойства Prepared). При очередном исполнении запроса готовность автоматически восстанавливается.

void _fastcall TFormI::ButtonlClick(TObject *Sender)

{

char sqls[250]; // массив для хранения команды SQL

char fmts[50]; // массив для значения зарплаты

// Присвоить

fmts значение, введенное пользователем

if ( i (strcmp(SalaryEdit->Text .c_str () , " ") ==0)) strcpytfmts, SalaryEdit->Text.c_str()) ;

else

strcpy(fmts, "100000"); //

максимальная зарплата

// Деактивировать предыдущий запрос, если он имел место

Queryl->Close() ;

// Очистить свойство SQL от предыдущего запроса

Queryl->SQL->Clear() ;

// Построить команду SELECT с помощью функции sprintf




Содержание  Назад  Вперед