Page tree
Skip to end of metadata
Go to start of metadata

V príklade sa predpokladá existenciu objektov SD.DbStruct, TB.Table. Ďalej musí byť spustený príslušný proces D2000 DBManager a v operačnom systéme je v ODBC korektne konfigurovaná databáza s príslušným DSN menom.

 INT _handle ; handle pre prístup k tabuľke 
 INT _retCode
 TEXT _where
 RECORD (SD.DbStruct)_dbRow ; pomocné premenné
 RECORD (SD.DbStruct) _dbRowSave
 
 ; otvorenie tabuľky pre modifikáciu
 DB_CONNECT TB.Table, _DB_MODIFY, _handle, _retCode
 IF _retCode # _ERR_NO_ERROR THEN ; nepodarilo sa spojiť s tabuľkou
     END
 ENDIF
 
 ; čítanie podľa klúčovej položky
 _dbRow[1]^Int := 1
 DB_READ _handle, _dbRow[1], _retCode
 IF  _retCode # _ERR_NO_ERROR THEN ; riadok sa v tabuľke nenachádza
     END
 ENDIF
 
 ; odložím si pôvodný riadok z tabuľky do pomocnej premennej
 SET _dbRowSave[1] WITH _dbRow[1] ; zmením text
 _dbRow[1]^Text := _dbRow[1]^Text + "zmena"
 ; zapíšem riadok naspäť do tabuľky podla kľúčovej položky
 DB_UPDATE _handle, _dbRow[1], _retCode
 IF _retCode # _ERR_NO_ERROR THEN ; nepodaril sa update
     END
 ENDIF
 
 ; znova prečítam riadok, ale cez klauzulu WHERE
 _where := "Int="+%IToStr (_dbRowSave[1]^Int)
 DB_READ _handle, _dbRow[1], _retCode WHERE _where
 IF  _retCode # _ERR_NO_ERROR THEN ; musí tam byť 
     END
 ENDIF 
 
 ; znova prečítam riadok, ale cez klauzulu WHERE s parametrizovanou podmienkou
 _where := "Int=#PAR#"
 DB_READ _handle, _dbRow[1], _retCode WHERE _where BINDIN _dbRowSave[1]^Int
 IF  _retCode # _ERR_NO_ERROR THEN ; musí tam byť 
     END
 ENDIF 
 
 ; zruším ho
 DB_DELETE _handle, _dbRow[1], _retCode
 IF  _retCode # _ERR_NO_ERROR THEN ; musí tam byť
     END
 ENDIF 
 
 ; alebo cez klauzulu WHERE
 ;_where := "Int="+%IToStr(_dbRowSave[1]^Int)
 ;DB_DELETE _handle, __retCode WHERE _where
 ;IF _retCode # _ERR_NO_ERROR THEN ; musí tam byt
 ; END
 ;ENDIF
 
 ; alebo cez klauzulu WHERE a parametrizovanu podmienku
 ;_where := "Int=#PAR#"
 ;DB_DELETE _handle, __retCode WHERE _where BINDIN _dbRowSave[1]^Int
 ;IF _retCode # _ERR_NO_ERROR THEN ; musí tam byt
 ; END
 ;ENDIF  
 
 
 
; vložím pôvodný obsah
 DB_INSERT _handle, _dbRowSave[1], _retCode
 IF _retCode # _ERR_NO_ERROR THEN ; malo by sa to podariť
     END
 ENDIF 
 ; zatvorím tabuľku
 DB_DISCONNECT _handle

V nasledujúcom príklade sa predpokladá existencia objektov SD.BlobStruct, TB.BlobTable. Ďalej musí byť spustený príslušný proces D2000 DBManager a v operačnom systéme je v ODBC korektne konfigurovaná databáza s príslušným DSN menom. Tabuľka BlobTable v databáze musí mať okrem stĺpcov ID a Meno (ktoré sú definované v SD.BlobStruct) aj stĺpec MyFile typu BLOB (Binary Large OBject). Databáza Sybase tento typ nazýva LONG BINARY, Oracle pre zmenu BLOB a MS SQL Server zase IMAGE. Kompatibilita je skrátka skvelá vec.

 INT _handle ; handle pre prístup k tabuľke 
 INT _retCode
 TEXT _where
 RECORD (SD.BlobStruct)_dbRow ; pomocná premenná
 
 ; otvorenie tabuľky pre modifikáciu 
 DB_CONNECT TB.BlobTable, _DB_MODIFY, _handle, _retCode
 IF _retCode # _ERR_NO_ERROR THEN; nepodarilo sa spojiť s tabuľkou
    END
 ENDIF 
 
 ; vložím do tabuľky riadok
 _dbRow^ID := 99
 _dbRow^Meno := "My inserted file"
 DB_INSERT _handle, _dbRow, _retCode
 IF _retCode # _ERR_NO_ERROR THEN ; malo by sa to podariť
     END
 ENDIF 
 
 ; vložím do tabuľky súbor ako BLOB objekt
 DB_UPDATE_BLOB _handle, "MyFile",  "C:\File99.txt", _retCode, 99
 IF _retCode # _ERR_NO_ERROR THEN ; malo by sa to podariť
     END
 ENDIF
 
 ; načítam z tabuľky iný súbor (z riadku s ID=11) a uložím ho na disk C:\
 DB_READ_BLOB _handle, "MyFile", "C:\File11_new.txt", _retCode, 11
 
 ; keby nebol stĺpec ID definície štruktúry SD.BlobStruct definovaný
 ; ako kľúčový, bolo by treba špecifikovať podmienku WHERE:
 DB_READ_BLOB _handle, "MyFile",  "C:\File11_new.txt", _retCode WHERE "ID=11"
 
 ; zatvorím tabuľku
 DB_DISCONNECT _handle
 
 ; práca bez otvárania tabuľky (funkcie DBS_ )
 
 ; načítam ďalší súbor bez otvárania tabuľky
 DBS_READ_BLOB TB.BlobTable, "MyFile", "C:\File22_new.txt", _retCode, 22

 ; uložím ho do tabuľky
 DBS_UPDATE_BLOB TB.BlobTable, "MyFile", "C:\File22_new.txt", _retCode, 33
 

Súvisiace stránky:

Write a comment…