A Brief Introduction to SDB
Luis
luis at anachreon.co.uk
Fri Jun 1 04:43:11 EDT 2007
Hiya,
That sounds perfect for a Rev only DB. Any infos on availability?
Cheers,
Luis.
On 31 May 2007, at 16:41, Rob Cozens wrote:
> From the Database chapter of the Serendipity Reference stack (which
> is, itself, an SDB front end).:
>
> Database handlers are used to create, access, and maintain stacks
> created in the Serendipity Database--Binary (SDB) format.
>
> SDBs databases support:
>
> * single-user exclusive update access with multi-user read-only
> access.
> * client-server exclusive update, shared update & read-only access.
> * multiple record types
> * variable-length records, fields, & keys
> * access by
> * Exact or approximate key
> * Relative position (first,prev,next,last)
> * Record Id (SDB card Id)
> * Raw record number (SDB card #-3)
> * Inverted key fields
> * update & retrieval of individual fields
> * selection based on field contents
>
> In general, data is passed between the calling stack & SDB via two
> buffer areas, referred to in examples as "sdbBuffer" and
> "binaryBuffer". The contents of sdbBuffer can change from
> operation to operation; but the general format for reads & writes
> places the record type in word 1 of line 1, followed by the record
> key. Lines 2 to -1 contain the record data (or a portion thereof).
>
> BinaryBuffer is used to file or retrieve binary data which cannot
> be stored in a Transcript field.
>
> Both buffers are passed by reference. For example, the calling
> handler would place the record type & key in sdbBuffer* before
> calling getSDBRecord, and it would find the actual record type &
> key in line 1 of sdbBuffer followed by the record content after
> successful completion of the call. If the record includes binary
> data, it is returned in binaryBuffer. Since binaryBuffer is passed
> by reference, it must be initialized to empty even if no binary
> data is sent or received.
>
> SDB record types are a maximum of 4 characters, and cannot contain
> leading or embedded blanks. Record types are case sensitive.
>
> There are six predefined record types:
>
> * "0" designates that word 2 of sdbBuffer contains the SDB record
> id (ie: the Revolution card id) instead of a key.
>
> * "#" designates that word 2 of sdbBuffer contains the raw SDB
> record number (ie: the Revolution card number - 3) instead of a key.
>
> * "+" designates the next record (of the same record type) relative
> to the user's current position.
>
> * "-" designates the previous record (of the same record type)
> relative to the user's current position.
>
> * "DICT" designates the SDB Data Dictionary Record.
>
> * "INVX" designates the SDB Inverted Field Index Record.
>
> SDB records are delimited lists of fields (items). The field
> delimiter used is specified by the calling handler. IMPORTANT: Num-
> to-char(30), End of Record, is used by SDB Utilities for database
> backup & restore; thus its use in user data or as a field delimiter
> is prohibited. Also, although SDB accepts any field delimiter
> values from 1 to 256, it is recommended that a delimiter < 128 be
> used to avoid potential conflicts when running cross-platform in
> client/server mode.
>
> All SDB commands return true or false in word 1 of the result. If
> word 1 is true, an error occurred, and the error description is in
> line 2. Otherwise the result (for reads & writes) returns the
> record number in word 2, the record count in word 3, and the
> Revolution card id for the record in word 4. Note the record
> number and record count are specific to the record type; so do not
> confuse the returned record number with the raw SDB record number.
>
> The checkSDBResult command, when called immediately after a
> database handler call, will sound an alert, display an error
> message, and return true if the call generated an error. If the
> original call was successful, checkSDBResult returns the original
> result.
>
> The SDB handlers determine what database to access by referencing
> Library stack local variable, sdbDbId, which is returned by
> openSDBFile. A user stack can have more than one SDB database open
> at the same time and maintain a current position in each; however
> it is the responsibility of the user stack to maintain a table of
> the ids of all open databases and to set the id of the correct
> database before each call [see getSDBDbId & setSDBDbId].
>
> SDB includes three template stacks to be used to build standalone
> applications: SDB_Utilities.rev, SDB_Server.rev, and
> SDB_Test_Client.rev.
>
> SDB_Utilities.rev, is used to build a standalone application to
> create, open, backup, & restore SDB Database files, and to serve as
> the application to open an SDB databse if the user double-clicks on
> it instead of opening it from your application. DO NOT use the
> stack itself, but build a standalone for your platform using SDB
> Utilities.rev, optionally including Revolution's animation
> library. If you are building for Mac OS, set the creator code for
> the standalone to "sDIP".
>
> SDB_Server.rev is used to build the SDB Server application for use
> in client/server mode.
>
> SDB_Test_Client.rev is used to build an exemplar of SDB syntax and
> client application handlers
>
> SDB also includes sdbTools.rev, a developers' plugIn including
> Windows registry set up and data dictionary access along with the
> utility functions available in SDB Utilities, and reVise.rev,a
> template stack for building a drag-and-drop application for
> compressing/expanding files/folders.
>
> SDB Files are of four types:
>
> *Databases created by SDB Utilities, sdbTools, and the
> createSDBFile handler are file type "sdb0" and end in ".sb0".
>
> *Compressed database backups created by SDB Utilities and sdbTools
> are file type "sdb1" and end in ".sb1".
>
> *Compressed gzip files created by reVise, SDB Utilities, and
> sdbTools are file type "sdb2" and end in ".sb2".
>
> *Compressed gzip archives created by reVise, SDB Utilities, and
> sdbTools are file type "sdb3" and end in ".sb3"
>
> Apple creator code is "sDIP".
>
> In addition to documenting Library handlers and menus, this
> Reference serves as an exemplar of the use of an SDB database.
> Check the scripts throughout this stack for database-related
> handlers, and use SDB Utilities to open English Reference
> Text.sb0. Click on the file cabinet key and enter a valid
> password ("Browse" or "Edit"). This enables the Edit menu and/or
> the Browse menuItem of the File menu.
>
> The following commands and functions provide developer-level access
> to SDB:
>
> addSDBComments
> changeSDBRecord
> checkSDBResult
> closeSDBFile
> createSDBFile
> deleteSDBRecord
> fileSDBRecord
> findSDBRecord
> getFirstSDBRecord
> getLastSDBRecord
> getSDBClientId
> getSDBComments
> getSDBDbId
> getSDBRecord
> logInSDBClient
> logOutSDBClient
> openSDBFile
> preOpenSDBFiles
> setSDBComments
> setSDBClientId
> setSDBDbId
> theSDBRecordIndex
> unlockSDBRecord
>
> Questions and comments are werlcomed.
>
> Rob Cozens, CCW
> Resident Foole
>
> _______________________________________________
> use-revolution mailing list
> use-revolution at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-revolution
>
More information about the use-livecode
mailing list