HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

SQL szerverünk adatbázisainak megjelenítése a Weben


Példaprogram letöltése

5854 bájt

Ebben a példában egy olyan webes alkalmazást készítünk, amely megjeleníti SQL szerverünk adatbázisait, azok tábláit és végül a táblák adatszerkezetét. Az alkalmazás főablakában először az elérhető adatbázisok jelennek meg. Ha rákattintunk az egyikre, akkor megjelennek a táblái, végül ha rákattintunk egy táblára, akkor megjelenik annak adatszerkezete is.

A példaprogram használatához szükséges egy webszerver (pl.: IIS) és egy Microsoft SQL szerver. A mellékelt példa futtatása előtt a Unit1.pas forráskód 20. sorában lévő ConnectionString konstans értékét módosítsa úgy, hogy a Northwind példaadatbázis elérhetővé váljon.
Programunk webes alkalmazás lesz. Kattintsunk a File – New menüpontra. A megjelenő New Items ablakban válasszuk a Web Server Application-t.
Válasszuk a CGI-Stand-alone executable lehetőséget.
Az SQL szerverhez az ADO paletta komponenseivel fogunk kapcsolódni. Szükség lesz egy TADOConnection-re (Con), egy TADOStoredProc (Proc), és egy TADOTable (ADOTable1) objektumra. A Proc és az ADOTable1 objektumok Connection tulajdonságát állítsuk Con-ra. A kapcsolatot az SQL szerverrel majd forráskódból építjük fel.
Egyetlen külső állományra se lesz szükségünk, mindent a program fog generálni.
Három fajta tartalmú HTML oldalt kell megjelenítenünk. Az adatbázisok nevét, egy adatbázis tábláinak nevét, és végül egy tábla adatszerkezetét. Az első kettőhöz szükséges HTML oldal előállítására TPageProducer objektumokat használunk. Ezeket sorrendben Database és Tables-nek neveztük el.
A TPageProducer-ek HTMLDoc tulajdonságában megírhatjuk a HTML oldalak vázát. Az alábbi módon megadhatunk egy HTM címkét.
<#Contents>
A címkét forráskódból bármilyen tartalommal, könnyedén helyettesíthetjük. A cserét az objektumok OnHTMLTag eseményeiben hajthatjuk végre. Az objektum végignézi a HTMLDoc tartalmát, és amikor egy címkéhez ér, létrejön a fenti esemény. Az esemény minden egyes címke esetén meghívódik.
Az eseményt kezelő metódusban a címkét a TagString azonosítja. A címke tartalmát az alábbi módon adhatjuk meg.
ReplaceText:=ReplaceText+'<a href="server.exe/Tables?t='+FList[i]+'">'+FList[i]+'</a><BR>';
Kattintsunk duplán a WebModule1 ablakon. A megjelenő kis ablakban kattintsunk az egér jobb gombjával. Válasszuk az Add menüpontot. Ezzel a módszerrel hozzunk létre három TWebActionItem elemet. Ezek segítségével fogjuk a szerver felé érkező kéréseket kiszolgálni. Minden egyes paraméter külön feldolgozást igényel majd. A paraméter határozza meg, hogy melyik HTML oldalt kell megjeleníteni.
A WebActionItem1 Producer tulajdonságát állítsuk Database-re, a WebActionItem2-ét Tables-re. WebActionItem3 esetén a PathInfo-t állítsuk /Structure-ra. A WebActionItem1 Default értékét állítsuk igazra, így az lesz az alapértelmezett kérés kiszolgáló.
A TWebActionItem objektumok OnAction eseményében programozhatjuk le, hogy mi történjen az adott kérés teljesítése esetén. Most vegyük sorba ezeket.
A WebActionItem1 jeleníti meg az adatbázisok listáját. A listát egy tárolt eljárás segítségével érhetjük el. Ehhez a Proc objektumot használjuk fel.
A tárolt eljárást az alábbi módon tudjuk felhasználni.
with Proc do begin
  ProcedureName:='sp_databases;1';
  Active:=True;
  First;
  while not Eof do begin
    FList.Add(Fields[0].AsString);
    Next;
  end;
  First;
end;
Az FList egy TStringList, amelyre a megjelenítendő információkat fűzzük fel. Ezzel előkészítjük a megjelenítendő HTML oldal tartalmát, hogy azt a Database objektum behelyettesíthesse a #Contents címke helyére. Az alábbi kód a Database objektum OnHTMLTag eseménye.
ReplaceText:='';
for i:=0 to FList.Count-1 do
  ReplaceText:=ReplaceText+'<a href="server.exe/Tables?t='+FList[i]+'">'+FList[i]+'</a><BR>';
Itt azért nem kell hivatkoznunk a #Contents címkére, mert csak ez az egy van. A HTML kód „t” paraméterében jegyezzük fel az adatbázis nevét, hogy amikor a felhasználó egy adatbázis nevére kattint, akkor a táblák megjelenítésére szolgáló eljárás meg tudja azt határozni.
Térjünk vissza a WebActionItem1 OnAction eseményéhez. A megjelenítendő HTML oldal tartalmát az alábbi utasítással juttathatjuk el a Database objektumtól a felhasználóig.
Response.Content:=Database.Content;
A WebActionItem2 hozza létre az adattáblákat megjelenítő oldalt. Működése hasonló a WebActionItem1-hez. A listát itt is tárolt eljárással kérdezzük le.
ProcedureName:='sp_tables;1';
A ConnectionString megadásánál már meg kell adnunk az adatbázis nevét is, amit lekérdezhetünk a HTML hivatkozás paraméteréből.
FDatabase:=Request.QueryFields.Values['t'];
A Tables objektum OnHTMLTag eseményében, a HTML hivatkozást már két paraméterrel kell ellátnunk, az adatbázis és a tábla azonosítása céljából.
Végül a WebActionItem3 fogja létrehozni a táblák szerkezetét megjelenítő oldalt. Itt is ügyeljünk arra, hogy a ConnectionString felépítésénél meg kell adnunk az adatbázis nevét.
Az adattáblához az ADOTable1 objektummal kapcsolódunk. Helyezzünk el a Modul-on egy TADODataSet objektumot (FieldSchema). Ezt kapcsoljuk hozzá a Structure objektumhoz, annak DataSet tulajdonságán keresztül. A FieldSchema által megjelenítendő adathalmazt az alábbi módon hozzuk létre.
Con.OpenSchema(siColumns,VarArrayOf([Unassigned,Unassigned,ADOTable1.TableName,Unassigned]),EmptyParam,FieldSchema);
Ezzel a FieldSchema megkapja a kiválasztott tábla szerkezetét leíró adatokat, több mint 30 mezőt.
A FieldSchema objektumra duplán kattintva meg kell adnunk a megjelenítendő mezők nevét, hogy a többi ne jelenjen meg. Ehhez célszerű ideiglenesen kapcsolatot létesíteni az SQL szerverrel.
Mezőnév Jelentése
COLUMN_NAME Mezőnév
DATA_TYPE Típus
CHARACTER_MAXIMUM_LENGTH Hossz
NUMERIC_PRECISION Pontosság
A DATA_TYPE mező tartalmát az SQL szerver számként tárolja el. A mező OnGetText eseményében cseréljük ki a számokat a nekik megfelelő szöveges típusnévre.
Ezután nincs más dolgunk, mint a Structure objektum által létrehozott HTML oldalt megjeleníteni.

Cikksorozat

#IDKategóriaCikk címeSorozat
1099DelphiDBChart komponens felhasználása1. rész
1113DelphiTDBChart komponens2. rész
1122DelphiTDBChart komponens3. rész
1132DelphiTDBChart komponens4. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2002 évkönyv 754. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |