![](http://datasheet.mmic.net.cn/260000/PPSMMANUAL_datasheet_15946768/PPSMMANUAL_50.png)
7-4
DataDatabase Management
Programmer’s Manual
DBReadTotalNumberRecords(gAddBkDBaseID, &numRec);
}
7.4
Searching and Retrieving Data
The following example uses the database created from Example 7-1, and
searches for a particular record using a formatted data field as the key. It is good
programming practice to check the returned status of the call DBSearchData()
ensuring that a match is found before using the recID returned for subsequent
operation.
Example 7-2 Search a database record list using a formatted data field and
retrieve record data
/* Global database identifier */
U32 gAddBkDBaseID;
/* This is the search key */
TEXT grec1FName[4]={’K’,’e’,’n’,0};
STATUS searchRec(void)
{
STATUS ret;
U32 recID;
/* Pointers to the formatted data field to be read out */
P_TEXT tempLname, tempFname, tempPhone, tempAddress;
/* Search for a record in the record list with the DB_FIRST
formatted data field matching the key string grec1FName */
ret = DBSearchData(gAddBkDBaseID,DB_FIRST,grec1FName,&recID);
if (ret != PPSM_OK) return (-1); /* Search unsuccessful! */
/* recID now is the record which match the search key */
/* We can now access the data contained in the record via recID */
DBReadData(gAddBkDBaseID, recID, DB_LAST, &tempLname);
DBReadData(gAddBkDBaseID, recID, DB_FIRST, &tempFname);
DBReadData(gAddBkDBaseID, recID, DB_HOME, &tempPhone);
DBReadData(gAddBkDBaseID, recID, DB_ADDRESS, &tempAddress);
/* tempLname, tempFname, tempPhone, tempAddress now points to
data field stored in the record identified by recID */
} /* end searchRec() */
7.5
Navigating along a Record List
The following example uses the record list navigation tools to access record
sequentially. It is assumed that a database with the identifier gAddBkDBaseID has
already existed. Initially, the first record ID in the record list is retrieved. Then a
while loop is set up to access record in the list sequentially. Termination of the loop
is by using the botFlag passed to the routine DBGetNextRecID(). When this flag is
set to 1, it signifies that the current record is the last record of the record list.
Example 7-3 Use the record list navigation tools to access record sequen-
tially
/* Global database identifier */
U32 gAddBkDBaseID;
STATUS seqAccessofRec(void)
{
U32 RecId,nextRecId;
S32 srchToken = 1;
U16 botFlag = 0;
P_TEXT stdDataOut;
Personal Portable System Manager
Programmer’s Manual
7-5
STATUS ret;
/* Get the first record ID for the database */
ret = DBGetFirstRecID(gAddBkDBaseID, &RecId);
/* Check if the database record list is empty */
if (ret == PPSM_ERROR) return(-1);
/* Read back data */
DBReadData(gAddBkDBaseID, RecId, DB_FIRST, &stdDataOut);
.
/* Do something here */
.
/* Get next record */
while(srchToken)
{
DBGetNextRecID(gAddBkDBaseID, RecId, &nextRecId, &botFlag);
/* The RecId passed is already at the end of list, exit loop */
if(botFlag == 1){ srchToken = 0; break;}
/* Read back data */
DBReadData(gAddBkDBaseID, nextRecId, DB_FIRST, &stdDataOut);
.
/* Do something here */
.
/* Continue search */
RecId = nextRecId;
} /* end while (srchToken) */
} /* end of seqAccessofRec() */
F
Freescale Semiconductor, Inc.
For More Information On This Product,
Go to: www.freescale.com
n
.