TIBSQL 
 V 1.00   2003.10.14.

Tartalom

  1. Áttekintés, Licensz
  2. A TIBSQLDLL.pas interface unit
  3. Használat DELPHI programokban
  4. Fizikai adattárolás
  5. TIBSQL.DLL fájl létrehozása
  6. DEMO program forditása
  7. Vátozások

  TIBSQL álltal támogatott SQL szintaxis          

Letöltés

(forrás fájlok, dll-ek, demo.exe zip formátumban)



1.Áttekintés, Licensz

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)


2. A TIBSQLDLL.pas interface unit

//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!


3. Használat DELPHI programokban

   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;
   2. TIBSQLHandle := TIBSQLconnect('dbdir','dbnév');
      3.  TIBSQLCursor := TIBSQLExecSQL(TIBSQLHandle, 'SQLstr');
      4.  if TIBSQLgetStatus = TIBSQL_OK then
             TIBSQLCursor segitségével az eredmény feldolgozása
          else
             hibakezelés
      5.  TIBSQLCursorClose(TIBSQLCursor);
      ..... a 3,4,5 lépések többször ismétlődhetnek
   6. TIBSQLDisconnect(TIBSQLHandle);

   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
     begin
       TIBSQLgo(TIBSQLCursor, i);
       for j := 0 to TIBSQLColumnCount(TIBSQLCursor) - 1 do
         Oszlopok adatainak feldolgozása a
         TIBSQLgetColumnName(TIBSQLCursor,j)
         TIBSQLgetColumnType(TIBSQLCursor,j)
         TIBSQLgetColumnSize(TIBSQLCursor,j)
         TIBSQLgetString(TIBSQLCursor,j)
         TIBSQLgetInteger(TIBSQLCursor,j)
         TIBSQLgetFloat(TIBSQLCursor,j)
         TIBSQLgetDate(TIBSQLCursor,j)
         TIBSQLgetBoolean(TIBSQLCursor,j)    rutinok segitségével.
     end;

   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".


4. Fizikai adattárolás

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.


5. TIBSQL.DLL fájl létrehozása

   Delphi -ben nyissuk meg a TIBSQLDLL.DPR -t és forditsuk le.


6. DEMO program forditása

   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.


7. A program változásai

   V 1.00    2003.10.13


 


 

  Budapest 2003.10.13.   Fogler Tibor

   www.robitbt.hu
   foglert@robitbt.hu