EEPW首页 > 商机频道 > 北京中联微电有限公司 > 新闻 > 数据库技术在BREW中的应用 ARM培训 ARM学习

公司信息

北京中联微电有限公司
所在省:北京
所在市:请选择
店铺地址:http://ec.eepw.com.cn/
mfmember/index/userid/6803

推荐产品

LED显示屏开发套件
价格:198元
ARM嵌入式硬件培训
价格:3860元
STM32开发板
价格:258元
DSP2812 开发板
价格:350元

联系我们

北京中联微电有限公司
电话:010-56259396
邮箱:pcb_design818@yahoo.cn
地址:北京市海淀区中关村北二条乙八号(赛特瑞科技楼五层)
数据库技术在BREW中的应用 ARM培训 ARM学习
来源:zhuyanxu905   时间:2012-09-24

数据库技术在BREW中的应用

数据库技术作为一种对信息管理的高效方式,逐渐在业界占据了重

要的地位,可以说目前任何类型的IT产品,都或多或少的采用了数

据库技术,数据库产品无所不入。

BREW作为无线开发环境也提供了数据库技术。那么下面我就对数据

库技术作一下分析:

BREW数据库是一种简单的关系型数据库,无多任务,无多用户,多

记录。它提供给开发者三个接口:IDBMgr,IDatabase,IDBRecord

IDBMgr接口用于创建、打开、和删除数据库。IDatabase接口用户

创建和访问数据库中的记录。IDBRecord接口用户访问、更新数据

库记录中的域。

下面是一些常用的数据库操作:

1、创建新数据库
代码:
IDBMgr * pIDBMgr = NULL;
IDatabase * pIDatabase = NULL;
boolean bCreate = TRUE;

ISHELL_CreateInstance(pIShell, AEECLSID_DBMGR, (void **)

&pIDBMgr);
if (pIDBMgr == NULL)
return;

if ((pIDatabase = IDBMGR_OpenDatabase (pIDBMgr, pszFile,

bCreate)) == NULL)
{
// Opened an already existing database.
}
else
{
// Create an database.
}

2、打开数据库
代码:
IDBMgr * pIDBMgr = NULL;
IDatabase * pIDatabase = NULL;
boolean bCreate = FALSE;

ISHELL_CreateInstance(pIShell, AEECLSID_DBMGR, (void **)&

(*pIDBMgr));
if (pIDBMgr == NULL)
return;

if (((*pIDatabase) = IDBMGR_OpenDatabase ((*pIDBMgr),

pszFile, bCreate)) == NULL)
{
// Opened an already existing database.
}
else
{
// Opened an database.
}

3、关闭数据库
代码:
// IDATABASE_Release closes the open database files, and

frees
// any memory associated with the database.
if (pIDatabase)
{
IDATABASE_Release (pIDatabase);
}

// Release IDBMgr object. This step needs to be done
// only if no further use of the IDBMgr object is needed.
if (pIDBMgr)
{
IDBMGR_Release (pIDBMgr);
}

4、创建一条记录
代码:
boolean CreateOneRecord(IDatabase * pIDatabase, AEEDBField

* dbField, int nNumfields)
{
IDBRecord * pIDBRecord = NULL;

// IDATABASE_CreateRecord: creates a new database record

with the fields
// specified by pDBFields.
if ((pIDBRecord = IDATABASE_CreateRecord (pIDatabase,

dbField, nNumfields)) != NULL)
{
// Successfully created a database record.

// Release record
IDBRECORD_Release (pIDBRecord);

return TRUE;
}
else
{

//Create DB Record Failed
}

return FALSE;
}

dbField指向数据库记录域,nNumfields是域的个数。可以创建一

个这样的记录:
代码:
{
AEEDBField dbField[3];
int nNumfields = 3;
const char firstName [] = "John";
const char lastName [] = "Smith";
const char address [] = "123 First Street, USA";
AEEDBFieldType fieldType;
AEEDBFieldName fieldName;

// Data fill values used to create a database record.
// The parameter dbField is a three item array of type
// AEEDBField. Each array item corresponds to three

fields
// of the record.
dbField[0].fName = AEEDBFIELD_FIRSTNAME;
dbField[0].fType = AEEDB_FT_STRING;
dbField[0].pBuffer = (void *)firstName;
dbField[0].wDataLen = STRLEN (firstName);

dbField[1].fName = AEEDBFIELD_LASTNAME;
dbField[1].fType = AEEDB_FT_STRING;
dbField[1].pBuffer = (void *)lastName;
dbField[1].wDataLen = STRLEN (lastName);

dbField[2].fName = AEEDBFIELD_ADDRESS;
dbField[2].fType = AEEDB_FT_STRING;
dbField[2].pBuffer = (void *)address;
dbField[2].wDataLen = STRLEN (address);

return CreateOneRecord(pIDatabase, dbField, 3);
}

5、获取记录个数
代码:
uint32 GetRecordCount(IDatabase * pIDatabase)
{
// IDATABASE_GetRecordCount: returns the number of

records in the
// database specified. This gives the number of records

in the
// database prior to creating any records in the

database.
return IDATABASE_GetRecordCount (pIDatabase);
}

6、读取记录域
代码:
boolean GetRecordByID(IDatabase * pIDatabase, uint16

u16RecID)
{
IDBRecord * pIDBRec1 = NULL;
AEEDBFieldType fType;
AEEDBFieldName fName;
uint16 fLen;
byte * data = NULL;;

// This will reset the record Index to 0.
IDATABASE_Reset (pIDatabase);

// IDATABASE_GetRecordByID: returns a pointer to the

record whose
// record ID is specified.
pIDBRec1 = IDATABASE_GetRecordByID (pIDatabase,

u16RecID);

// Get the raw data of the field
for(;;)
{
// Get record 1 first field and display it
fType = IDBRECORD_NextField (pIDBRec1, &fName, &fLen);

data = IDBRECORD_GetField (pIDBRec1, &fName, &fType,

&fLen);
if (data != NULL)
{
switch(fName)
{
case AEEDBFIELD_FIRSTNAME;
break;
case AEEDBFIELD_LASTNAME;
break;
case AEEDBFIELD_ADDRESS;
break;
default:
break;
}
}
else
{
break; //break for
}
}

// Now remove record 1.
IDBRECORD_Release(pIDBRec1);
return TRUE;
}