TIBSQL
V 1.00 2003.10.14.
Tartalom
A TIBSQL egy nativ, egyfelhasználós SQL rendszer. A standart SQL nyelv egy szükitett változatát támogatja. (lásd TIBSQLszintaxis.htm ). A TIBSQL nem használ indexeket, a táblákat teljes egészükben memoriába olvassa be és ott dolgozza fel őket. A rendszer Delphi -ben készült, elsősorban Delphi programokban történő használatra, bár feltehtőleg C++ i-ból is használható.
A TIBSQL -t használó programok müködéséhez két DLL file-ra van szükség:
TIBSQL.DLL, BORLANDMM.DLL
A BORLANDMM.DLL A Borland delphi rendszer része,
használatának feltételeit lásd ott.
A TIBSQL minden korlátozás nélkül szabadon használható, módositható szabad szoftver.
A TIBSQL -T MINDENKI SAJÁT FELELÖSSÉGÉRE HASZNÁLHATJA. A TIBSQL MÜKÖDÉSÉRT, HASZNÁLATÁBÓL EREDŐ ESETLEGES KÁROKÉRT A FEJLESZTŐ SEMMINEMÜ FELELŐSSÉGET NEM VÁLLAL, MÉG ABBAN AZ ESETBEN SEM HA A HIBÁRÓL TUDOMÁSA VOLT. A TIBSQL HASZNÁLATA A FENTIEK ELFOGADÁSÁT JELENTI.
A TIBSQL fejlesztése delphi4 -ben történt, tesztelve lett Delphi7-el is.
Várok minden észrevételt, javaslatot. Örömmel fogadom azok jelentkezését is akik részt tudnának venni a rendszer fejlesztésében, tesztelésében.
Szerző: Fogler Tibor RoBIT Bt (http://www.robitbt.hu E-mail: foglert@robitbt.hu)
//TIBSQLError kodok
const
TIBSQL_OK =
0;
TIBSQL_ErtekDbHiba = 3;
TIBSQL_NincsEredmeny =
4;
TIBSQL_TablaNincsMeg = 5;
TIBSQL_ParatlanIdezojel =
6;
TIBSQL_HibasSQLutasitas = 7;
TIBSQL_ParatlanZarojel =
8;
TIBSQL_UnionHiba = 9;
// képletError értékek
TIBSQL_KepletHiba =
10;
TIBSQL_OszlopNincsmeg = 11;
TIBSQL_OsztasNullaval =
12;
TIBSQL_EgyebKepletHiba = 19;
// Elemzoerror
értékek
TIBSQL_VesszotVart = 31;
TIBSQL_ZorojeletVart =
32;
TIBSQL_Idezojeletvart = 33;
TIBSQL_SQLszintaktika = 39;
type
TTIBSQLHandler = Pointer; // TIBSQL
adatbázis kezelő
TTIBSQLCursor = Pointer; // TIBSQL
kurzor
var
//
-----------------------------------------------------------------------------
//
Alap rutinok
//
-----------------------------------------------------------------------------
//
csatlakozás egy adatbázishoz
TIBSQLconnect: Function (DBDir, DBname :
String) : TTIBSQLHandler;
// levállás az adatbázisról, a végzett
változtatások lemezre irása,
// lefoglalt memoria
felszabaditása
TIBSQLDisconnect: Procedure (var DBH :
TTIBSQLHandler);
// SQL utasitás végrehajtása
TIBSQLExecSQL:
Function (DBH : TTIBSQLHandler; SQLstr : String) : TTIBSQLCursor;
// Az
adatbázisban lévő táblák neveinek lekérdezése
TIBSQLgettablenames:
Function (DBH : TTIBSQLHandler) : Tstrings;
//
------------------------------------------------------------------------------
//
Kurzor feldolozó rutinok
//
------------------------------------------------------------------------------
//
Rekordok számának lekérdezése
TIBSQLRecordCount: Function (DBC :
TTIBSQLCursor) : Integer;
// Oszlopok számának
lekérdezése
TIBSQLColumnCount: Function (DBC : TTIBSQLCursor) :
Integer;
// Kurzor pozicionálása adott sorszámú pozicióba. Az első rekord
sorszáma=0
TIBSQLGo: Procedure (DBC : TTIBSQLCursor; RecNo :
Integer);
// Az adott sorszámú oszlop tipusának lekérdezése. A balszélső
oszlop sorszáma=0
// kimenet: CHAR, INTEGER,
FLOAT,DATE,LOGICAL
TIBSQLgetColumnType: Function (DBC : TTIBSQLCursor;
ColumnNo : Integer): String;
// Az adott sorszámú oszlop nevének lekérdezése.
A balszélső oszlop sorszáma=0
TIBSQLgetColumnName: Function (DBC :
TTIBSQLCursor; ColumnNo : Integer): String;
// Az adott sorszámú oszlop belső
ábrázolásának méretét adja meg.
// A balszélső oszlop
sorszáma=0
TIBSQLgetColumnSize: Function (DBC : TTIBSQLCursor; ColumnNo
: Integer): Integer;
// Az aktuális rekord, adott oszlopának tartalma
karakteres formában
// A balszélső oszlop
sorszáma=0
TIBSQLgetString: Function (DBC : TTIBSQLCursor; ColumnNo :
Integer): String;
// Az aktuális rekord, adott oszlopának tartalma Integer
formában
// A balszélső oszlop sorszáma=0
TIBSQLgetInteger: Function
(DBC : TTIBSQLCursor; ColumnNo : Integer): Integer;
// Az aktuális rekord,
adott oszlopának tartalma Double formában
// A balszélső oszlop
sorszáma=0
TIBSQLgetFloat: Function (DBC : TTIBSQLCursor; ColumnNo :
Integer): Double;
// Az aktuális rekord, adott oszlopának tartalma TdateTime
formában
// A balszélső oszlop sorszáma=0
TIBSQLgetDate: Function
(DBC : TTIBSQLCursor; ColumnNo : Integer): TDateTime;
// Az aktuális rekord,
adott oszlopának tartalma Boolean formában
// A balszélső oszlop
sorszáma=0
TIBSQLgetLogical: Function (DBC : TTIBSQLCursor; ColumnNo :
Integer): Boolean;
// Az Kurzor bezárása, a lefoglalt memoria
felszabaditása
// A balszélső oszlop sorszáma=0
TIBSQLCloseCursor:
Procedure (var DBC : TTIBSQLCursor);
//
-----------------------------------------------------------------------
//
Hibakezelés
//
-----------------------------------------------------------------------
//
status kód (lsd fentebb)
TIBSQLgetStatus: Function (DBH :
TTIBSQLHandler) : Integer;
// kiegészitő információ a
hibáról
TIBSQLgetErrorInfo: Function (DBH : TTIBSQLHandler) :
String;
// magyar nyelvü hibaüzenet az utolsó előfordult hibáról
Function
TIBSQLgetErrormsg : String;
// Dll betöltés
Procedure TIBSQLLoadDll;
FIGYELEM FONTOS
!
A felhasználói programban a DPR file-ba
javitani kell, a USES részben ELSŐNEK a ShareMem -nek kell szerepelnie!
A TIBSQL használatának általános sémája:
FIGYELEM! a dpr -ben, az uses után a ShareMem legyen az első!
uses .....TIBSQLDLL,......
1. TIBSQLLoadDll; |
Megjegyzés: A TIBSQLCloseCursor hivás akkor is szükséges ha olyan SQL utasitást hajtunk végre ami nem ad eredmény táblát, és akkor is kell ha az sql utasitás végrehajtása hibával állt le.
Az eredmény tábla feldolgozása
for i := 0 to TIBSQLRecordCount(TIBSQLCursor) - 1
do |
Az INSERT, UPDATE, DELETE SQL -ek csak a memoriában hajtódnak végre, lemezre csak a következő FLUSH, COMMIT, END TRANSACTION, START TRANSACTION sql utasitások, vagy a disconnect hiváskor írodnak ki. A ROLLBACK SQL hivással a memoriában végzett eddigi még ki nem tárolt változtatásokat "kitárolás nélkül el dobjuk".
Az egyes adatbázisok a connect rutinban megadott"DBDir" könyvtár alatt lévő alkönyvtárak. A "DBDir" könyvtárnak már léteznie kell.
Az egyes táblák a "DBDir\DBnév" könyvtárban lévő "CSV" kiterjesztésű fájlok.
A fájlok standart "delimeted" string formában tartalmazzák az oszlop definiciókat és az adatokat. Az adatokat vessző határolja. Ha az adat maga is tartalmaz vesszőt akkor az adat kettős idézőjelek közt áll. Kettős idézőjel nem lehet az adatokban.
Az első sor az oszlopneveket, a második az adat tipusokat, a harmadik az adatok belső ábrázolásának méretét tartalmazza. A további sorok pedig az adatrekordok.
Delphi -ben nyissuk meg a TIBSQLDLL.DPR -t és forditsuk le.
delphi -ben nyissuk meg a
TIBSQLDLL_DEMO.DPR -t és forditsuk le.
a futáshoz a rendszernek
el kell érnie a TIBSQLDLL.dll -t és a
BORLANDMM.dll -t.
Budapest 2003.10.13. Fogler Tibor
www.robitbt.hu
foglert@robitbt.hu