HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

SQL utasítás végrehajtása állományból


Példaprogram letöltése

6543 bájt

SQL utasítások végrehajtása több módon lehetséges. Beágyazhatjuk őket tárolt eljárásokba, vagy a programkódba. Ezek hátránya, hogy az utasítás kódja alapvetően nem módosítható. Ezen is segíthet az MS SQL Server BULK INSERT funkciója, melynek köszönhetően egy állományba ágyazhatjuk az SQL-t. Az állomány egy szöveges fájl, melyet módosíthatunk anélkül, hogy a kódok valamelyikét meg kellene változtatnunk. Cikkünkben ezt a lehetőséget járjuk körbe részletesen.

A mellékelt projekt használatához szükséges a BulkDB adatbázis, melyet a mellékelt Run.cmd BATCH állomány lefuttatásával hozhatunk létre. Csak arra kell ügyelni, hogy a BulkDB.sql parancsállomány a BATCH állománnyal azonos mappában legyen. A BulkDB.sql parancsállomány 5. sorában adja meg helyesen a létrehozandó adatbázisfájlok mappájának nevét és elérési útvonalát.
A MS SQL Server BULK műveletei eredetileg arra szolgálnak, hogy az állományokban található, speciális formátumban megadott adathalmazokat egy adatbázis tetszőleges táblájába töltsék.
A BULK INSERT utasítás felhasználását is erre a tulajdonságra alapozzuk, vagyis megadunk egy állománynevet, melyben egy SQL utasítást tárolunk, és annak eredményhalmazát tetszőleges formában felhasználhatjuk.
A BULK INSERT művelet szintaxisa a következőképpen fest:
BULK INSERT
[adatbázis neve.tulajdonos.] <táblanév>
FROM <állomány neve>
A szintaxis egyszerűsített változat, hiszen most csak egy utasítást tartalmazó állományt olvasunk be, és nem pedig egy adathalmazt. A művelet érdekessége, hogy nem használható úgy, hogy a fájl elérési útvonalát egy tárolt eljárás paramétereként adjuk meg.
Minden esetben egy karakterlánc-konstanst kell átadnunk a FROM kulcsszó után.
A mellékelt példában egy nyomógombot találunk, melyre kattintva lefuttathatunk egy BULK INSERT műveletet úgy, hogy a projekt mappájában található sample.sql állomány elérési útvonalát adjuk át paraméterként. Az állományban a következő SQL utasítást találjuk:
select * from Table1 where ID = 1 OR ID = 2
A művelet elvégzése három részműveletből áll. Első lépés, hogy létrehozunk egy ideiglenes táblát #tmp néven. Ebbe kerül majd be az állomány SQL utasítása.
tmpcreate := 'CREATE TABLE #tmp(Query NVARCHAR(4000))';
with DM.ADOCommand1 do begin
  CommandText := tmpcreate;
  Execute;
A BULK INSERT művelettel beolvassuk az állomány tartalmát a #tmp táblába.
  reading := 'BULK INSERT #tmp FROM ''' + ExtractFilePath(Application.ExeName) + 'sample.sql''';
  CommandText := reading;
  Execute;
Ezt követően lekérdezzük az SQL utasítást.
  exe := 'SELECT Query FROM #tmp';
  CommandText := exe;
  rc := Execute;
  sql := rc.Fields[0].Value;
end;
Az utasítást megadjuk az ADODataSet1 komponens CommandText property-jében. Így az eredmény látható lesz a DBGrid-ben.
with DM.ADODataSet1 do begin
  CommandText := sql;
  Open;
  ReQuery;
end;

Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2003 évkönyv 729. 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 |