The following example assumes that there are defined the objects SD.DbStruct, TB.DTable
.
Then the particular process
D2000 DBManager must be started and a database with the particular DSN name
must be correctly configured in the
operating system.
INT _handle ; handle for access to the database INT _retCode TEXT _where RECORD (SD.DbStruct)_dbRow ; artificial variables RECORD (SD.DbStruct) _dbRowSave ; open the table to modify DB_CONNECT TB.Table, _DB_MODIFY, _handle, _retCode IF _retCode # _ERR_NO_ERROR THEN ; cannot connect to the database table END ENDIF ; reading according to key value _dbRow[1]^Int := 1 DB_READ _handle, _dbRow[1], _retCode IF _retCode # _ERR_NO_ERROR THEN ; row not found END ENDIF ; assign the original database table row to the artificial variable SET _dbRowSave[1] WITH _dbRow[1] ; change text _dbRow[1]^Text := _dbRow[1]^Text + "change" ; update the database table row according to the key value DB_UPDATE _handle, _dbRow[1], _retCode IF _retCode # _ERR_NO_ERROR THEN ; unsuccessful update END ENDIF ; read the row again, but using WHERE clausule _where := "Int="+%IToStr(_dbRowSave[1]^Int) DB_READ _handle, _dbRow[1], _retCode WHERE _where IF _retCode # _ERR_NO_ERROR THEN ; there must be END ENDIF ; read the row again, but using WHERE clausule and parametrized condition _where := "Int= #PAR#" DB_READ _handle, _dbRow[1], _retCode WHERE _where BINDIN _dbRowSave[1]^Int IF _retCode # _ERR_NO_ERROR THEN ; there must be END ENDIF ; delete it DB_DELETE _handle, _dbRow[1], _retCode IF _retCode # _ERR_NO_ERROR THEN ; there must be END ENDIF ; or using WHERE clausule ;_where := "Int="+%IToStr(_dbRowSave[1]^Int) ;DB_DELETE _handle, __retCode WHERE _where ;IF _retCode # _ERR_NO_ERROR THEN ; there must be ; END ;ENDIF ; or using WHERE clausule and parametrized condition ;_where := "Int=#PAR#" ;DB_DELETE _handle, __retCode WHERE _where BINDIN _dbRowSave[1]^Int ;IF _retCode # _ERR_NO_ERROR THEN ; there must be ; END ;ENDIF ; insert the orginal content DB_INSERT _handle, _dbRowSave[1], _retCode IF _retCode # _ERR_NO_ERROR THEN ; it should be successful END ENDIF ; close the database table DB_DISCONNECT _handle
The following example assumes, that there are defined the objects
SD.BlobStruct,
TB.BlobTable
.
Then corresponding DBManager process must be running and the database with
corresponding
DSN
name must be correctly configured. Except the column ID and Name (defined in
SD.BlobStruct),
the database table BlobTable in the database must also contains the
column MyFile of BLOB type (Binary Large OBject). Sybase
database this type calls LONG BINARY, Oracle it calls BLOB and MS SQL Server
calls it IMAGE.
INT _handle ; handle for access to the database table INT _retCode TEXT _where RECORD (SD.BlobStruct)_dbRow ; auxiliary variable ; open the datanase table for modification DB_CONNECT TB.BlobTable, _DB_MODIFY, _handle, _retCode IF _retCode # _ERR_NO_ERROR THEN ; cannot connect the database table END ENDIF
; insert a row into the database table _dbRow^ID := 99
_dbRow^Meno := "My inserted file" DB_INSERT _handle, _dbRow, _retCode IF _retCode # _ERR_NO_ERROR THEN ; it should be successful END ENDIF ; insert the file as a BLOB object into the database table DB_UPDATE_BLOB _handle, "MyFile", "C:\File99.txt", _retCode, 99 IF _retCode # _ERR_NO_ERROR THEN ; it should be successful END ENDIF ; read another file (from the row with ID=11) from the table and save it to the disk C:\ DB_READ_BLOB _handle, "MyFile", "C:\File11_new.txt", _retCode, 11 ; if the column ID of the structure definition is not defined
; as a key, it is neccessary to define the WHERE condition: DB_READ_BLOB _handle, "MyFile", "C:\File11_new.txt", _retCode WHERE "ID=11" ; close the database table DB_DISCONNECT _handle
; -- work with no need to open the database table (DBS_ functions) ; read another file without opening the database table DBS_READ_BLOB TB.BlobTable, "MyFile", "C:\File22_new.txt", _retCode, 22 ; save it to the database table DBS_UPDATE_BLOB TB.BlobTable, "MyFile", "C:\File22_new.txt", _retCode, 33
Related pages:
Pridať komentár