C Language Development Kit/Snippets/Database/WriteRecord

From OptiWiki

Jump to: navigation, search
Description Append or overwrite a record in the database.
int WriteRecord( SDBFile *dbFile, char *record, int iFlag );
Arguments SDBFile *dbFile

dbFile is pointer to a structure that holds information about the database. The SDBFile structure is defined as followed:

typedef struct
    short  sRecSz;        // record size of database
    int    fd;            // real handle to the open file
    long   lCurrRecord;   // current record number
    long   lTotalRecords; // total amount of records
    int    bOpen;         // check to see if db is open or closed
char *record

The record holds the data that is fetched from the database.

int iFlag

iFlag can be one of these values:

WRITE_OVER Overwrite the record where GetCurrentRecord() is pointing to.
WRITE_APPEND Append a record to the end of the database.
TRUE On success.
FLASE On failure.
Remarks The declaration of the SDBFile needs to be static to make sure all items are initialized to 0.

When the ReadCurrentRecord() functions returns FALSE the error code can be obtained by making a call to GetDBErrorCode() function.

#include "lib.h"
#include <stdio.h>
#include <stdlib.h>
#include "database.h"  //Holds the database functions
void main( void )
    static SDBFile dbFile; // static initializes all items to 0
    long recno;
    int i;
    char record[32 + 1];
    printf("\fCreate database\n");
    if( !CreateDatabase("file1.txt", 32, &dbFile ))
        printf("Error code = %ld\n", GetDBErrorCode());
    memset( record, '\0', sizeof( record ));
    printf("Write 10 records\n");
    for( i = 9; i > -1; i-- )
        sprintf(record, "%01d23456789012345678901234567890\r\n", i);
        if( !WriteRecord( &dbFile, record, WRITE_APPEND ))
            printf("Error code = %ld\n", GetDBErrorCode());
    if( (recno = GetCurrentRecord( &dbFile )) == -1L)
        printf("Error code = %ld\n", GetDBErrorCode());
    printf("current rec = %ld\n", recno);
    if( !GotoRecord( &dbFile, 3L ))
        printf("Error code = %ld\n", GetDBErrorCode());
    if( (recno = GetCurrentRecord( &dbFile )) == -1L)
        printf("Error code = %ld\n", GetDBErrorCode());
    printf("current rec = %ld\n", recno);
    if( !ReadCurrentRecord( &dbFile, record ))
        printf("Error code = %ld\n", GetDBErrorCode());
    printf("record data = %s\n", record);
    printf("Close database\n");
    CloseDatabase( &dbFile );
    while( 1 )

Personal tools