Автор работы: Пользователь скрыл имя, 12 Января 2011 в 22:05, лабораторная работа
Мета: ознайомитися з особливостями використання структурованої мови запитів (SQL) при роботі з базами даних в середовищі Delphi.
Динамічний запит формується шляхом змінення властивості SQL компонента Query.
Приклад:
Procedure TForm1.Button1Click(Sender: TObject);
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add(‘SELECT *’);
Query1.SQL.Add(‘FROM znak’);
case ComboBox1.ItemIndex of
0: pol:= ‘m’;
1: pol:= ‘g’;
end;
Query1.SQL.Add(‘WHERE (Pol = ’+ pol + ‘) AND ’);
Query1.SQL.Add(‘(Vik BETWEEN ’+ Edit1.Text + ‘ AND ’+ Edit2.Text +‘)’);
if CheckBox1.Checked
then Query1.SQL.Add(‘ORDER BY Dat_post DESC’)
else Query1.SQL.Add(‘ORDER BY Dat_post’);
Query1.Open;
end;
В даному прикладі формується SQL-запит, що дозволяє здійснити вибірку даних з таблиці znak.db, яка містить анкетну інформацію про кандидатів, поданих в службу знайомств. При цьому користувач обирає в списку ComboBox1 стать кандидату. Далі в полях двох однорядкових редакторів Edit1 та Edit2 задається діапазон віку, за яким буде здійснюватися пошук кандидату. Стан перемикача CheckBox1 визначає, чи будуть дані виводитися в порядку зростання або в порядку зменшення дати подачі анкети в службу знайомств.
Використання динамічного запиту в наведеному прикладі пояснюється тим, що критерії відбору заздалегідь не відомі, а визначаються тільки на етапі виконання програми. Саме тому використання статичного запиту в даній ситуації неможливо.
Слід також звернути увагу, що перед динамічним зміненням SQL-запиту необхідно закрити набір даних, викликавши метод Close, а потім очистити вміст властивості SQL, викликавши метод Clear.
Для виконання SQL-запиту SELECT після динамічних змін необхідно викликати метод Open. Для виконання SQL-запиту, що виконує модифікувати набір даних (UPDATE, INSERT, DELETE).
За допомогою параметрів в запит можна передавати деякі значення, які отримують в ході виконання додатку. Параметричний запит не є динамічним в прямому розумінні цього слова. Справа в тому, що параметри можуть бути використані для налаштування як статичного, так і динамічного запиту під час виконання додатку. Але оскільки параметричний запит може бути виконаний тільки в момент роботи додатку і тільки при задаванні деяких значень, раніше не визначених, то прийнято відносити даний вид запитів до динамічних.
Параметри – це спеціальні змінні, значення яких раніше не відомо. Як і для звичних змінних, в ході виконання додатку замість параметри підставляється його значення. В тексті запиту перед ім’ям параметру ставиться двокрапка.
Наприклад, зі списку товарів, що є в магазині, потрібно вибрати всі товари, ціна яких менша за деяке значення, що задається користувачем. Для рішення даної задачі, насамперед створюється запит такого вигляду:
SELECT Tovar, Price
FROM shop
WHERE Price <: Cena
Параметри, вказані в SQL-запиті, автоматично задаються в список параметрів, що є значенням властивості Params компоненту Query. За допомогою даної властивості можна отримати доступ до кожного параметру при розробці або виконанні додатку. Звертання до параметри здійснюється за його номером (індексом) або за його ім’ям.
При
виконанні додатку перед
Приклад:
Procedure TForm1.Button1Click(Sender: TObject);
begin
Query1.Close;
Query1.ParamsByName(‘
Query1.Open;
end;
Таким чином можна передавати різні параметри в SQL-запит, не змінюючи сам текст запиту. Оскільки текст параметричного запиту не змінюється, його можна попередньо підготувати, використовуючи метод Prepare. Даний метод звично викликається при створенні форми. Використання цього методу дозволяє прискорювати виконання параметричних, а також статичних запитів. Аналізуючи властивість Prepared, можна визначити, чи був запит попередньо підготований. Після підготовки запиту методом Prepare даній властивості встановлюється значення True.
Якщо текст підготованого запиту був змінений (привласнення значень параметрам зміненням не вважається), то автоматично викликається метод UnPrepare і властивості Prepared встановлюється значення False.
Завдання
Звіт повинен містити:
Змінна | Тип | Призначення |
Информация о работе Використання мови SQL при роботі з базами даних в Delphi