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:
Add Comment