Russian Belarusian English German Japanese Ukrainian

Rashka.studio - игры и приложения для Android! Заходи, ждём тебя =)

Выполнение SQL-запроса

CuBook05

Для выполнения SQL-запроса на сервере БД служит компонент SQLQuery. Он позволяет представлять результаты выполнения запросов с помощью инструкции SELECT или осуществлять действия по изменению БД путем выполнения инструкций INSERT, DELETE, UPDATE, ALTER TABLE и т.п. Для компонента SQLQuery текст SQL-запроса определяется как значение свойства SQL типа TStrings. На этапе разработки приложения текст SQL-запроса может быть набран непосредственно в окне редактора строк (или редактора кода), открываемого двойным щелчком на свойстве SQL в окне Инспектора объектов. При выполнении приложения очистка содержимого свойства SQL компонента SQLQuery и его модификация могут быть выполнены, к примеру, с помощью следующего кода:
SQLQuery1->SQL->Clear();
SQLQuery1->SQL->Add("SELECT " + Edit1->Text + " FROM " + Edit2->Text);
if(!(Edit3->GetTextLen()== 0))
{
SQLQuery1->SQL->Add("ORDER BY " + Edit3->Text);
}
Свойство Text типа AnsiString в качестве значения содержит строковое представление SQL-запроса в виде одной строки, а не нескольких, как это может быть в случае свойства SQL. Свойство Active типа bool определяет, открыт набор данных или нет. Это свойство обычно используют, чтобы определить или установить заполнение набора данными. Открыть набор данных SQL-запроса можно также с помощью метода Open либо с помощью метода:
virtual int __fastcall ExecSQL(bool ExecDirect = false);
Значение true параметра ExecDirect означает, что запрос не имеет настраиваемых параметров.
 
Свойство DataSource связывает набор данных SQL-запроса с другим (главным) набором данных. Этот набор данных используется для получения параметров запроса в случае, когда предусматривается параметризованный запрос, но приложение этими параметрами не обеспечивает. Для примера приведем две процедуры обработки событий, в которых компонент SQLQuery1 используется для выполнения динамического SQL-запроса по отбору записей из таблицы CUSTOMER с целью просмотра содержимого полей 'CUST_NO' и 'PHONE_NO'. Таблица, принадлежит базе данных employee.gdb сервера InterBase.
void __fastcall TForm1::Button1Click{TObject *Sender)
{
Edit1->Text = "CUST_NO, PHONEJNO";
Edit2->Text="CUSTOMER";
Edit3->Text="CUST_NO";
}
void __fastcall TForm1::Button2Click(TObject *Sender)
{
try
{
SQLQuery1->Close();
SQLQuery1->SQL->Clear();
SQLQuery1->SQL->Add("SELECT " + Edit1->Text + " FROM " + Edit2- >Text);
if(!(Edit3->GetTextLen()== 0))
{
SQLQuery1->SQL->Add("ORDER BY " + Edit3->Text);
}
SQLQuery1->Open();
}
catch(...)
{
MessageDlg("Ошибка!", mtError, TMsgDlgButtons() << mbOK, 0);
}
Edit4->Text=SQLQuery1->FieldByName("CUST_NO")->AsString;
Edit5->Text=SQLQuery1->FieldByName("PHONE_NO")->AsString;
}
При обработке события Button1Click нажатия кнопки с заголовком Задать имена в компоненты Edit1, Edit2 и Edit3 заносятся имена отбираемых полей, имя таблицы и имя поля для сортировки. При обработке события Button2Click нажатия кнопки с заголовком Выполнить запрос указанные имена используются при формировании и выполнении SQL-запроса с помощью компонента SQLQuery1. Для просмотра значений отобранных полей с помощью SQL-запроса используются компоненты Edit4 и Edit5. Приведенный вариант кода обеспечивает просмотр полей первой записи набора данных. При необходимости перемещения по записям при просмотре можно воспользоваться методами First и Next.
Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter

Добавить комментарий