phpRS            

Dnešní datum: 07. 09. 2010   | Hlavní stránka | Seznam rubrik | Kniha návštěv |  
  Hlavní menu
Hlavní stránka
Seznam rubrik
Fotogalerie
Kniha návštěv
Stáhněte si
Odkazy
Ankety
TOP 15

  Reklama


  Rubriky

  Poslouchám na síti


Spusť přehrávač


Spusť přehrávač


  Informace o webu
Všehochuť aneb od každého trochu

Content © 1991-2010 Slávek Rydval

View Slávek Rydval's profile on LinkedIn

Vytvořeno pomocí phpRS a Texy!

RSS kanál

Odborné články

* Z Delphi na Interbasi

Vydáno dne 04. 08. 2005 (3374 přečtení)

V minulých dvou číslech jsme mimo jiné instalovali databázový stroj Interbase 6.0 a ukazovali si, jak je možné v PHP získávat informace z v ní uložených dat. Dneska si předvedeme, jak lze k Interbasi přistupovat z Delphi. Předpokládám, že máte zkušenosti s prací s databázemi například přes BDE (Borland Database Engine).

Protože Interbasi podobně jako Delphi dodává jedna a tatáž firma (dříve Borland, pak Inprise, následně Inprise/Borland a nyní opět Borland), je jasné, že bude existovat nějaké řešení přímo v Delphi.

Od verze Delphi 5 je součástí balení Enterprise a Professional Interbase Express, což jsou komponenty umožňující nativní přístup k databázovému serveru. V paletě komponent je naleznete na záložce InterBase.

Komponenty v paletě

Centrální komponentou je TIBDatabase, která řídí připojení, určuje dialekt, standardní transakci a další. Protože našim cílem je připojit se, věnujeme této komponentě nejvíce času.

Pokud na ni poklepete, zobrazí se dialog podobný jako na následujícím obrázku:

Přihlašovací dialog

Že je nutné zadat uživatelské jméno, heslo a případně roli je naprosto jasné. Stejně pochopitelné je nutnost zadat jméno databáze včetně cesty tak, jak je uložen na serveru resp. na lokálním počítači. Tím jsme se vlastně dostali k tomu, kde je vlastně server umístěn. V případě, že máte Interbasi nainstalovanou na vašem počítači, ze kterého budete přistupovat, pak nechte nastavené připojení na Local. V opačném případě zvolte Remote a budete muset ještě zadat server, na který se chcete napojit a protokol, který použije. Na výběr jich je několik (TCP/IP, NetBEUI či SPX).

Zbývá nám Character set, což je množina znaků, kterou budeme používat při přístupu k databázi (například znaková sada s češtinou) a Settings. Pokud jste zadali uživatelské jméno nebo heslo, pak se tyto položky objevili právě v tomto seznamu. Pomocí něho můžete zadat i další (smysluplné) nastavení, ale většinou se používají pouze uvedené.

Zadejte tedy všechny potřebné informace, a zrušte zaškrtnutí Login prompt (při pokusu o napojení byste jinak byli znovu požádáni o zadání jména a hesla). Po stisku tlačítka OK nastavte vlastnost ConnectedObject Inspectoru na True. Jestliže jste zadali všechny hodnoty správně, mělo by proběhnout připojení k databázi. V opačném případě dostanete chybové hlášení (zkontrolujte, zda jste opravdu vše zadali v pořádku a zda server běží).

Protože Interbase je transakční, je potřeba ještě na formulář vložit komponentu TIBTransaction, kterou následně propojte s TIBDatabase přes vlastnost DefaultTransac­tion. Nyní již můžeme provádět základní databázové operace. Zkusme si nejprve zobrazení obsahu některé tabulky. K tomu ovšem zcela paradoxně nepoužijeme komponenty TIBTable, ale TIBQuery nebo TIBDataSet. Je to z toho důvodu, že TIBTable je velmi náročná na server, protože při otevření některé z tabulek bez ohledu na její velikost načítá velké množství informací. Jedná se o přežitek ze souborových databází, proto se jejímu použití zásadně vyhněte.

Dobře, máme tedy například TIBQuery, připojte ji tedy k databázi pomocí vlastnosti Database a do vlastnosti SQL napište příkaz SELECT z tabulky, která se v databázi vyskytuje. Nyní již příkaz aktivujte a propojte přes datový zdroj (TDataSource) na datovou mřížku (TDBGrid).

Podobně jako například při práci s BDE se pracuje s uloženými procedurami. Komponentě TIBStoredProc přiřaďtě databázi, název a případné parametry.

Protože se bavíme o připojení, vrátíme se k dialogu, který jsem popisoval na začátku. Je totiž strašně fajn, že se můžeme relativně příjemně připojit z Delphi, ale co náš uživatel? Ukážeme si, jak vyvinout vlastní dialog na připojení.

Vytvořte si vlastní formulář a „naklikejte“ si dialog podobný tomu na druhém obrázku, pouze navíc přidejte vstupní řádku pro zadání dialektu. Nyní je zapotřebí naplnit vlastnosti komponenty TIBDatabase. Kromě dialektu a cesty k databázi se ostatní informace zadávají přes vlastnost Params. Než si ukážeme příklad, povězme si něco o tom, jak určit protokol v případě napojování se na vzdálený server.

To, jaký protokol chcete použít, určíte pomocí vlastnosti DatabaseName, ve které se mimo jiné uvádí i soubor s databází. Jak přesně to tedy dát dohromady? Předpokládejme, že je databáze uložena v souboru C:\IB\DB.GDB na serveru, který se jmenuje STAREJKRAP. Jak napsat příslušný řetězec ukazuje následující seznam:

  • TCP/IP: STAREJKRAP.CZ:C:\IB\DB­.GDB
  • NetBEUI: \\STAREJKRAP\C:\IB\D­B.GDB
  • SPX: STAREJKRAP@C:\IB\D­B.GDB

V případě lokální databáze použijeme prostě pouze soubor s cestou.

Příklad připojení pak může vypadat podobně jako na níže uvedením výpisu. Na přiloženém CD je ukázkový formulář, který můžete vkládat do svých aplikací a používat jej pro uživatelské přihlašování k databázi.

procedure Connect (IBDatabase: TIBDatabase);
begin {Connect}
  with IBDatabase do
  begin
    Params.Clear;
    Params.AddStrings (mmNextSettings.Lines); //další parametry
    Params.Values ['USER_NAME'] := edtUserName.Text; //jméno
    Params.Values ['PASSWORD']  := edtPassword.Text; //heslo
    if edtRole.Text <> '' then
      Params.Values ['SQL_ROLE_NAME'] := edtRole.Text; //role

    if rgConnectionType.ItemIndex = 0 then //připojuji se lokálně
    begin
      DatabaseName  := cbxDatabase.Text;
    end else begin //připojuji se vzdáleně
      case cbxProtocol.ItemIndex of
        //TCPIP connection
        0: DatabaseName  := edtServer.Text+':'+cbxDatabase.Text;
        //NETBEUI connection
        1: DatabaseName  := '\\'+edtServer.Text+'\'+cbxDatabase.Text;
        //SPX connection
        2: DatabaseName  := edtServer.Text+'@'+cbxDatabase.Text;
      end; {case}
    end; {if}

    SQLDialect := StrToInt (edtDialect.Text); //dialekt

    Screen.Cursor := crSQLWait;
    try
      Connected := True; //pokus o připojení
    finally
      Screen.Cursor := crDefault;
    end;
  end; //with IBDatabase
end; {Connect}

Ukázali jsme si, jak se programově připojit k databázovému stroji Interbase pomocí standardně dodávaných komponent. Sluší se připomenout, že na Internetu lze nalézt další komponenty a nástroje, které mohou práci usnadnit, ale i znesnadnit.


Tento článek byl napsán pro časopis Softwarové noviny 5/2001.

Upozornění: tento text neprošel redakční úpravou, takže je tak, jak byl napsán včetně případných chyb. Žádná část tohoto článku nesmí být použita bez předchozího souhlasu autora.

Seznam mých dalších článků je v tomto přehledu.




[Akt. známka: 1,00 / Počet hlasů: 1] 1 2 3 4 5

Celý článek | Autor: Slávek Rydval | Počet komentářů: 0 | Přidat komentář | Informační e-mailVytisknout článek

  Čtenář
Jméno:
Heslo:


Registrace | Info
Zapomenuté heslo

  Vyhledávání

Hledej
na Nawebce!


Rozšířené vyhledávání

  Kalendář
<<  Září  >>
PoÚtStČtSoNe
  1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30    

  Reklama


rkEdit především pro vývojáře
rkEdit především pro vývojáře