Akcia SQL_CONNECT


Funkcia
Akcia nadviaže spojenie s databázou (otvorenie databázy).
Deklarácia
SQL_CONNECT dbObjIdent, handleIdent_Int, retCodeIdent_Int [TRANS _transHandle_Int]
 

SQL_CONNECT connectString, handleIdent_Int, retCodeIdent_Int ON dbManIdent
Parametre
dbObjIdentinOdkaz na objekt typu Databáza alebo Tabuľka.
connectStringinIdentifikátor typu Text, alebo textová konštanta obsahujúca pripájací string na databázu.
dbManIdent_IntinOdkaz na objekt typu Proces (D2000 DBManager), ktorý bude realizovať požadované príkazy.
handleIdent_IntoutIdentifikátor typu Int - jednoznačné číslo (handle) spojenia.
retCodeIdent_IntoutIdentifikátor typu Int- návratový kód.
transHandle_IntinIdentifikátor typu Int - jednoznačné číslo (handle) spojenia s databázou.
Návratový kód
Hodnota parametra retCodeIdent_Int - pozri tabuľku chybových stavov. Je možné získať rozšírenú informáciu o chybe.
Popis
Identifikátor pre číslo spojenia, alebo handle sa používa pri ďalšej práci s otvorenou databázou. Návratový kód popisuje úspešnosť akcie (_ERR_NO_ERROR).

Každé otvorenie databázy skriptom má pridelené jednoznačné číslo (identifikátor, handle). Toto je potrebné po ukončení práce s databázou zatvoriť akciou SQL_DISCONNECT. Ak po skončení skriptu nebudú všetky databázy uzatvorené volaním akcie SQL_DISCONNECT (tie, ktoré skript pri svojej činnosti otvoril), budú interne automaticky zatvorené. Handle platí len v rámci skriptu, ktorý databázu otvoril.

Akcia SQL_CONNECT má vždy charakter otvorenia databázy (nie tabuľky na rozdiel od akcií DB_CONNECT a PG_CONNECT), lebo prostredníctvom takto vytvoreného spojenia je možné pracovať s celou databázou (všetkými v nej obsiahnutými tabuľkami). Ak sa na otvorenie použije objekt typu Tabuľka, interne bude databáza otváraná prostredníctvom jeho rodiča, teda objektu typu Databáza.

Otváranú databázu je možné určiť objektom typu Databáza alebo Tabuľka (prvý spôsob zápisu) alebo tzv. pripájacím stringom (druhý spôsob zápisu).

Pri prvom spôsobe nie je potrebné zadať meno procesu D2000 DBManager, ktorý bude následné príkazy interpretovať, lebo toto je dané rodičovským vzťahom medzi objektom typu Databáza a týmto procesom. Akcia SQL_CONNECT využije z konfigurácie objektu typu Databáza konfiguračné parametre Užívateľ, Heslo a DSN.

Druhý spôsob zápisu umožňuje vytvoriť spojenie s databázou na základe znalosti Mena, Hesla a DSN pomocou tzv. pripájacieho stringu (parameter connectString). Jeho obsah je nasledovný:

"UID=meno užívateľa;PWD=heslo užívateľa;DSN=meno DSN".

Kľúčové slová UID, PWD a DSN označujú hodnoty jednotlivých parametrov. Ak niektorý z nich nie je uvedený, bude nahradený prázdnym reťazcom. Pri tomto spôsobe je nutné špecifikovať odkazom proces D2000 DBManager, ktorý bude zabezpečovať vykonávanie jednotlivých príkazov. Ďalšie voliteľné parametre pripájacieho stringu sa týkajú optimalizácie a sú popísané v kapitole Transakčná práca s databázou.

V prípade otvárania databázy prostredníctvom objektu typu Databáza alebo Tabuľka, je možné uviesť parameter transHandle_Int. Týmto budú všetky akcie SQL_* vykonávané v rámci určitého pripojenia. Toto pripojenie je potrebné najprv vytvoriť akciou DB_TRANS_OPEN.
Ak klauzula TRANS nie je uvedená, použije sa automatické pripojenie.

V prípade otvárania databázy prostredníctvom pripájacieho stringu (parameter connectString), proces D2000 DBManager vždy vytvára nové pripojenie na databázu. Ak sa v pripájacom stringu nachádza kľúčové slovo ACD (Auto Commit Disable), je v rámci nového pripojenia vypnutý režim Auto Commit, teda je potrebné "commit" vykonať manuálne pomocou SQL príkazu COMMIT.
Príklad
Príklad práce s databázou (akcie SQL_...).

 INT  _handle    ; handle to database
 INT  _retCode   ; return code
 TEXT _name      ; product name
 TEXT _type      ; product type
                 ; parametrized SQL command
 TEXT _sql =  "SELECT Name, Type FROM Products WHERE ID>= #PAR# AND ID<= #PAR#" 
 
 SQL_CONNECT MyDatabase, _handle, _retCode
 SQL_PREPARE _handle, _retCode, _sql BINDOUT _name, _type
 SQL_BINDIN  _handle, _retCode, 1, 100 ; read all products between 1 and 100
 
 DO_LOOP
   SQL_FETCH _handle, _retCode
   EXIT_LOOP _retCode #  _ERR_NO_ERROR
   ; data processing goes here
 END_LOOP
 
 SQL_FREE _handle
 SQL_DISCONNECT _handle
 

Súvisiace stránky:

Write a comment...