Używanie języka zapytań strukturalnych w Delphi

SQL (Structured Query Language) to ustandaryzowany język do definiowania danych w relacyjnej bazie danych i manipulowania nimi. Zgodnie z relacyjnym modelem danych baza danych jest postrzegana jako zestaw tabel, relacje są reprezentowane przez wartości w tabelach, a dane są pobierane przez określenie tabeli wyników, która może być uzyskana z jednego lub więcej stoły podstawowe. Zapytania mają formę języka poleceń, który pozwala wybierz, wstaw, aktualizuj, znajdź lokalizacji danych i tak dalej.

W Delphi: TQuery

Jeśli zamierzasz używać SQL w swoich aplikacjach, zapoznasz się z nim TQuery składnik. Delphi umożliwia aplikacjom bezpośrednie korzystanie ze składni SQL przez komponent TQuery w celu uzyskania dostępu do danych z tabel Paradox i dBase (przy użyciu lokalnego SQL - podzbiór standardowego SQL ANSI), baz danych na lokalnym serwerze InterBase i baz danych na zdalnej bazie danych serwery.
Delphi obsługuje również zapytania heterogeniczne dotyczące więcej niż jednego serwera lub typu tabeli (na przykład dane z tabeli Oracle i tabeli Paradox) .TQuery ma właściwość o nazwie

instagram viewer
SQL, który służy do przechowywania instrukcji SQL.

TQuery kapsułkuje jedną lub więcej instrukcji SQL, wykonuje je i udostępnia metody, za pomocą których możemy manipulować wynikami. Zapytania można podzielić na dwie kategorie: te, które generują zestawy wyników (takie jak WYBIERZ oświadczenie) oraz te, które tego nie robią (takie jak AKTUALIZACJAlub WSTAWIĆ komunikat). Użyj TQuery. Otwórz, aby wykonać zapytanie, które daje zestaw wyników; użyj TQuery. ExecSQL do wykonywania zapytań, które nie generują zestawów wyników.

Instrukcje SQL mogą być albo statyczny lub dynamiczny, tzn. można je ustawić w czasie projektowania lub dołączyć parametry (TQuery. Params), które różnią się w czasie wykonywania. Korzystanie ze sparametryzowanych zapytań jest bardzo elastyczne, ponieważ można zmieniać widok użytkownika i dostęp do danych w locie w czasie wykonywania.

Wszystkie wykonywalne instrukcje SQL muszą zostać przygotowane przed ich wykonaniem. Wynikiem przygotowania jest wykonywalna lub operacyjna forma instrukcji. Metoda przygotowania instrukcji SQL i trwałość jej formy operacyjnej odróżniają statyczny SQL od dynamicznego SQL. W czasie projektowania zapytanie jest przygotowywane i wykonywane automatycznie po ustawieniu pytanie Aktywna właściwość komponentu na True. W czasie wykonywania przygotowywane jest zapytanie z wywołaniem Prepare i wykonywane, gdy aplikacja wywołuje metody Open lub ExecSQL składnika.

TQuery może zwrócić dwa rodzaje zestawów wyników: „relacja na żywo„jak w przypadku komponentu TTable (użytkownicy mogą edytować dane za pomocą kontrolek danych, a gdy wystąpi wezwanie do opublikowania, zmiany są wysyłane do bazy danych)”,tylko czytać”tylko do celów wyświetlania. Aby zażądać zestawu wyników na żywo, ustaw właściwość RequestLive komponentu zapytania na True i pamiętaj, że instrukcja SQL musi spełniać określone wymagania (bez ORDER BY, SUM, AVG itp.)

Kwerenda zachowuje się na wiele sposobów bardzo podobnie do filtru tabeli, a pod pewnymi względami kwerenda jest nawet potężniejsza niż filtr, ponieważ umożliwia dostęp:

  • więcej niż jedna tabela na raz („dołącz” w SQL)
  • określony podzbiór wierszy i kolumn z bazowych tabel (tabel), zamiast zawsze zwracać wszystkie z nich

Prosty przykład

Zobaczmy teraz trochę SQL w akcji. Chociaż możemy użyć Kreatora formularzy bazy danych, aby utworzyć przykłady SQL dla tego przykładu, zrobimy to ręcznie, krok po kroku:

1. Umieść komponent TQuery, TDataSource, TDBGrid, TEdit i TButton w formularzu głównym.
2. Ustaw właściwość DataSet składnika TDataSource na Query1.
3. Ustaw właściwość DataSource składnika TDBGrid na DataSource1.
4. Ustaw właściwość DatabaseName komponentu TQuery na DBDEMOS.
5. Kliknij dwukrotnie właściwość SQL TQuery, aby przypisać do niej instrukcję SQL.
6. Aby siatka wyświetlała dane w czasie projektowania, zmień właściwość Active komponentu TQuery na True.
Siatka wyświetla dane z tabeli Employee.db w trzech kolumnach (Imię, Nazwisko, Wynagrodzenie), nawet jeśli Pracownik.db ma 7 pól, a zestaw wyników jest ograniczony do tych rekordów, w których rozpoczyna się Imię z „R”.

7. Teraz przypisz następujący kod do zdarzenia OnClick Button1.

procedura TForm1.Button1Click (Sender: TObject); zaczynać
Zapytanie 1. Zamknij;{zamknij zapytanie}// przypisz nowe wyrażenie SQL
Query1.SQL.Clear; Query1.SQL.Add („Wybierz EmpNo, FirstName, LastName”); Query1.SQL.Add („FROM Employee.db”); Query1.SQL.Add ('WHERE Wynagrodzenie>' + Edit1.Text); Query1.RequestLive: = true; Zapytanie 1. Otwórz; {otwórz zapytanie + wyświetl dane}koniec;

8. Uruchom aplikację. Po kliknięciu przycisku (o ile Edycja 1 zawiera prawidłową wartość waluty), siatka wyświetli Pola EmpNo, FirstName i LastName dla wszystkich rekordów, w których wynagrodzenie jest wyższe niż określona waluta wartość.

W tym przykładzie utworzyliśmy prostą statyczną instrukcję SQL z zestawem wyników na żywo (nie zmieniliśmy żadnego z wyświetlanych rekordów) tylko do celów wyświetlania.

instagram story viewer