📄 schdb.c
字号:
/**
* File Name : SchDB.h
* Created : 07/04/14
* Author : ZhongNingLin@neusoft.com
* Model : 05YOP
* Description : [[CN]] 此文件的职责是: [[CN]]
**/
#include "SchDB.h"
#include "schedule.h"
#include "aeestdlib.h"
#include "SeventContent.h"
/**************************************************************************
* Function Name : ScheDB_InitClassData
* Description : 创建数据库对象
* Input Parameters : Schedule*
* Output Parameters: None
* Return Value : boolean
* Date : 2007/04/14
* Author : ZhongNingLin@neusoft.com
***************************************************************************/
extern boolean ScheDB_InitClassData(ScheDB** ppObj,Schedule* pAee)
{
ScheDB* pMe = NULL;
IDBMgr * pDBMgr = NULL;
IShell * pIShell = pAee->a.m_pIShell;
int count = 0;
/*数据库类的创建*/
pMe = (ScheDB*)MALLOC(sizeof(ScheDB));
if(NULL == pMe)
{
return FALSE;
}
/*创建数据库对象*/
if(ISHELL_CreateInstance(pIShell, AEECLSID_DBMGR, (void**)(&pDBMgr)) != SUCCESS)
return FALSE;
/*打开数据库 不存在就创建一个数据库 数据库打开了立即关闭IDBMgr*/
if( ( pMe->m_pDatabase = IDBMGR_OpenDatabase(pDBMgr, SCHEDULE_DB_FILE, TRUE) ) == NULL )
{
IDBMGR_Release(pDBMgr);
return FALSE;
}
else
{
IDBMGR_Release(pDBMgr);
}
count = IDATABASE_GetRecordCount(pMe->m_pDatabase);
//ScheDB_EmptyEventDatabase( pMe );
*ppObj = pMe;
return TRUE;
}
/**************************************************************************
* Function Name : ScheEvtDB_FreeClassData
* Description : 释放数据库资源
* Input Parameters : Schedule*
* Output Parameters: None
* Return Value : boolean
* Date : 2007/04/14
* Author : ZhongNingLin@neusoft.com
***************************************************************************/
void ScheEvtDB_FreeClassData(Schedule* pMe)
{
ScheDB* pScheDB = NULL;
pScheDB = pMe->m_pScheDB;
//if( pMe->m_pScheDB == NULL)
// return;
/*释放数据库*/
(void)IBASE_Release(((IBase *)pScheDB->m_pDatabase));
/*数据库置为NULL*/
pScheDB->m_pDatabase = NULL;
/*释放当前结构体*/
FREEIF(pScheDB);
pScheDB = NULL;
}
/**************************************************************************
* Function Name : ScheDB_ParseEventRecord
* Description : ParseEventRecord return the data
* Input Parameters : .....
* Output Parameters: None
* Return Value : boolean
* Date : 2007/04/14
* Author : ZhongNingLin@neusoft.com
***************************************************************************/
static boolean ScheDB_ParseEventRecord( IDBRecord* pRecord, EventData *data)
{
uint16 nFieldLen;
AEEDBFieldName rFieldName;
AEEDBFieldType rFieldType;
AECHAR* psStringPtr;
/*事件编号*/
data->index = (uint8)IDBRECORD_GetID(pRecord);
/*重置数据库索引为-1*/
IDBRECORD_Reset( pRecord );
/*得到记录的第一个字段*/
rFieldType = IDBRECORD_NextField( pRecord, &rFieldName, &nFieldLen );
/*获得日期*/
psStringPtr = IDBRECORD_GetFieldString( pRecord );
WSTRCPY( data->eDate, psStringPtr );
/*获得第二个字段*/
rFieldType = IDBRECORD_NextField( pRecord, &rFieldName, &nFieldLen );
/*事件类型*/
IDBRECORD_GetFieldWord( pRecord, &data->eType );
/*获得第三个字段的数据*/
rFieldType = IDBRECORD_NextField( pRecord, &rFieldName, &nFieldLen );
/*事件内容*/
psStringPtr = IDBRECORD_GetFieldString( pRecord );
WSTRCPY( data->eContent, psStringPtr );
/*获得第四个字段*/
rFieldType = IDBRECORD_NextField( pRecord, &rFieldName, &nFieldLen );
/*姓名*/
psStringPtr = IDBRECORD_GetFieldString( pRecord );
WSTRCPY( data->eName, psStringPtr );
/*下一个字段*/
rFieldType = IDBRECORD_NextField( pRecord, &rFieldName, &nFieldLen );
/*电话号码*/
psStringPtr = IDBRECORD_GetFieldString( pRecord );
WSTRCPY( data->eTelNo, psStringPtr );
/*下一个字段*/
rFieldType = IDBRECORD_NextField( pRecord, &rFieldName, &nFieldLen );
/*事件时间*/
psStringPtr = IDBRECORD_GetFieldString( pRecord );
WSTRCPY( data->eTime, psStringPtr );
/*下一个字段*/
rFieldType = IDBRECORD_NextField( pRecord, &rFieldName, &nFieldLen );
/*闹钟类型*/
IDBRECORD_GetFieldWord( pRecord, &data->eAlarm );
/*下一个字段*/
rFieldType = IDBRECORD_NextField( pRecord, &rFieldName, &nFieldLen );
/*年龄*/
data->eAge = *IDBRECORD_GetField( pRecord, &rFieldName, &rFieldType, &nFieldLen );
return TRUE;
}
/**************************************************************************
* Function Name : ScheDB_InitEventFieldStruct
* Description : ParseEventRecord return the data
* Input Parameters : .....
* Output Parameters: None
* Return Value : boolean
* Date : 2007/04/14
* Author : ZhongNingLin@neusoft.com
***************************************************************************/
static void ScheDB_InitEventFieldStruct( AEEDBField* pFieldArray,EventData *data)
{
//======================事件日期===================================
/*数据库字段类型(文档)*/
pFieldArray[ DB_RECORD_FIELD_DATE ].fType = AEEDB_FT_STRING;
/*数据库字段名称(文档)*/
pFieldArray[ DB_RECORD_FIELD_DATE ].fName = AEEDBFIELD_TEXT;
/*字段的数据长度(不包括头)*/
pFieldArray[ DB_RECORD_FIELD_DATE ].wDataLen = WSTRSIZE( data->eDate );
/*指向包含字段数据的缓冲区的指针*/
pFieldArray[ DB_RECORD_FIELD_DATE ].pBuffer = data->eDate;
//======================事件类型===================================
pFieldArray[ DB_RECORD_FIELD_TYPE ].fType = AEEDB_FT_WORD;
pFieldArray[ DB_RECORD_FIELD_TYPE ].fName = AEEDBFIELD_NONE;
pFieldArray[ DB_RECORD_FIELD_TYPE ].wDataLen = sizeof( data->eType );
pFieldArray[ DB_RECORD_FIELD_TYPE ].pBuffer = &data->eType;
//======================事件内容===================================
pFieldArray[ DB_RECORD_FIELD_CONTENT ].fType = AEEDB_FT_STRING;
pFieldArray[ DB_RECORD_FIELD_CONTENT ].fName = AEEDBFIELD_TEXT;
pFieldArray[ DB_RECORD_FIELD_CONTENT ].wDataLen = WSTRSIZE( data->eContent );
pFieldArray[ DB_RECORD_FIELD_CONTENT ].pBuffer = data->eContent;
//========================姓名=====================================
pFieldArray[ DB_RECORD_FIELD_NAME ].fType = AEEDB_FT_STRING;
pFieldArray[ DB_RECORD_FIELD_NAME ].fName = AEEDBFIELD_TEXT;
pFieldArray[ DB_RECORD_FIELD_NAME ].wDataLen = WSTRSIZE( data->eName );
pFieldArray[ DB_RECORD_FIELD_NAME ].pBuffer = data->eName;
//======================电话号码===================================
pFieldArray[ DB_RECORD_FIELD_TEL ].fType = AEEDB_FT_STRING;
pFieldArray[ DB_RECORD_FIELD_TEL ].fName = AEEDBFIELD_TEXT;
pFieldArray[ DB_RECORD_FIELD_TEL ].wDataLen = WSTRSIZE( data->eTelNo );
pFieldArray[ DB_RECORD_FIELD_TEL ].pBuffer = data->eTelNo;
//======================事件时间===================================
pFieldArray[ DB_RECORD_FIELD_TIME ].fType = AEEDB_FT_STRING;
pFieldArray[ DB_RECORD_FIELD_TIME ].fName = AEEDBFIELD_TEXT;
pFieldArray[ DB_RECORD_FIELD_TIME ].wDataLen = WSTRSIZE( data->eTime );
pFieldArray[ DB_RECORD_FIELD_TIME ].pBuffer = data->eTime;
//======================闹钟类型===================================
pFieldArray[ DB_RECORD_FIELD_ALARMTYPE ].fType = AEEDB_FT_WORD;
pFieldArray[ DB_RECORD_FIELD_ALARMTYPE ].fName = AEEDBFIELD_NONE;
pFieldArray[ DB_RECORD_FIELD_ALARMTYPE ].wDataLen = sizeof( data->eAlarm );
pFieldArray[ DB_RECORD_FIELD_ALARMTYPE ].pBuffer = &data->eAlarm;
//=========================年龄====================================
pFieldArray[ DB_RECORD_FIELD_AGE ].fType = AEEDB_FT_BYTE;
pFieldArray[ DB_RECORD_FIELD_AGE ].fName = AEEDBFIELD_NONE;
pFieldArray[ DB_RECORD_FIELD_AGE ].wDataLen = sizeof( data->eAge );
pFieldArray[ DB_RECORD_FIELD_AGE ].pBuffer = &data->eAge;
}
/**************************************************************************
* Function Name : ScheDB_AddEventItem
* Description : ParseEventRecord return the data
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -