Delphi: ADO komponensek használata Console applicationben

Programozással kapcsolatos cikkek / Delphi (923 katt)

Előfordulhat, hogy a Delphi ADO komponenseit (amelyek a Turbo Delphiben a dbGo palettán találhatók) nem egy grafikus felületű, hanem egy konzol alkalmazásban szeretnénk használni. Példa lehet erre egy rendszeresen futó, ütemezett feladat programja, amelynél felesleges grafikus felületet létrehozni.

Jelen dokumentumban egy egyszerű példán keresztül ismertetem az ADO komponensek konzol alkalmazásból történő használatának egy lehetséges módját.

A módszer szemléltetésére egy Oracle szerverhez kapcsolódó programot készítünk, amely egy queryn keresztül kiad egy egyszerű select SQL-utasítást, majd a visszaadott értéket kiírja a képernyőre.

Első lépésben létre kell hoznunk egy új Console Applicationt. A program uses listájába fel kell vennünk az ADODB és az ActiveX nevű unitokat:

uses SysUtils, ADODB, ActiveX;



A munka megkönnyítésének céljából létrehozunk egy új függvényt, amely az Oracle szerverhez történő kapcsolódáshoz szükséges connection stringet adja vissza:

function GetConnectionString(
Database : string;
User : string;
Password : string): string;
begin
Result:='Provider=MSDAORA.1;Password=' + Password +
';User ID=' + User +
';Data Source=' + Database +
';Persist Security Info=True';
end;



A függvényt például az alábbi módon lehet meghívni:

ConnectionString:=GetConnectionString('XE','PROBA','PROBA');



A továbbiakban (az adatbázis-kapcsolat létrehozása előtt) arra kell figyelni, hogy meg kell hívni a CoInitialize függvényt a nil paraméterrel, különben az 'A program nem hívta meg a CoInitialize eljárást' hibaüzenetet kapjuk.

Ha az előzőekben leírtakra figyelünk, akkor más dolgunk nincs, mint a „megszokott” módon, futási időben létrehozni és használni a megfelelő objektumokat (a TADOConnection és pl. a TADOQuery osztályból).

A következő program röviden szemlélteti a leírtakat:

program ADOConsole;

{$APPTYPE CONSOLE}

uses
SysUtils, ADODB, ActiveX;

function GetConnectionString(
Database : string;
User : string;
Password : string): string;
begin
Result:='Provider=MSDAORA.1;Password=' + Password +
';User ID=' + User +
';Data Source=' + Database +
';Persist Security Info=True';
end;

var connection : TADOConnection;
q : TADOQuery;

begin
CoInitialize(nil);
connection:=TADOConnection.Create(nil);
connection.LoginPrompt:=false;
connection.ConnectionString:=GetConnectionString('XE','PROBA','PROBA');

q:=TADOQuery.Create(nil);
q.Connection:=connection;

q.SQL.Text:='select 1 as szam from dual';

q.Open;

Writeln('A visszaadott ertek: ', q.Fields.FieldByName('szam').AsString);

q.Close;
q.Free;

connection.Close;
connection.Free;
CoUninitialize;

Readln;
end.



A cikk PDF-verziója ezen a címen tölthető le:

Delphi_ADO1.pdf

Előző oldal Kapitány