📄 ussddb.cpp
字号:
#include "StdAfx.h"
#include "UssdDB.h"
CUssdDB::CUssdDB(void)
{
m_hDB = NULL;
m_hSesion = NULL;
m_bMounted = FALSE;
}
CUssdDB::~CUssdDB(void)
{
if(m_bMounted)
CeUnmountDBVol(&m_GUID);
if(m_hDB)
{
CloseHandle(m_hDB);
}
if(m_hSesion)
{
CloseHandle(m_hSesion);
}
}
BOOL CUssdDB::Open()
{
BOOL bReturn = CeMountDBVolEx(&m_GUID,HANGUP_DBPATH,NULL,OPEN_ALWAYS | EDB_MOUNT_FLAG);
if(!bReturn)
{
return FALSE;
}
m_bMounted = TRUE;
m_hSesion = CeCreateSession(&m_GUID);
m_oid = 0;
m_hDB = CeOpenDatabaseInSession(m_hSesion,&m_GUID,&m_oid,HANGUP_DBNAME,0,CEDB_AUTOINCREMENT,NULL);
if(INVALID_HANDLE_VALUE == m_hDB)
{
CEDBASEINFOEX cebi;
ZeroMemory(&cebi,sizeof(CEDBASEINFOEX));
cebi.dwSize = sizeof(CEDBASEINFOEX);
cebi.wVersion = CEDBASEINFO_VERSION;
cebi.dwFlags = CEDB_VALIDDBFLAGS | CEDB_VALIDNAME;
cebi.wNumSortOrder = 1;
cebi.rgSortSpecs[0].wVersion = SORTORDERSPECEX_VERSION;
cebi.rgSortSpecs[0].wNumProps = 1;
cebi.rgSortSpecs[0].wKeyFlags = 0;
cebi.rgSortSpecs[0].rgPropID[0] = MAKELONG(CEVT_LPWSTR,1);
cebi.rgSortSpecs[0].rgdwFlags[0] = CEDB_SORT_CASEINSENSITIVE;
wcscpy(cebi.szDbaseName,HANGUP_DBNAME);
m_oid = CeCreateDatabaseWithProps(&m_GUID,&cebi,0,NULL);
if(m_oid)
{
m_hDB = CeOpenDatabaseInSession(m_hSesion,&m_GUID,&m_oid,HANGUP_DBNAME,0,CEDB_AUTOINCREMENT,NULL);
}
}
return (INVALID_HANDLE_VALUE != m_hDB);
}
CEOID CUssdDB::Read(CUssdRecord& record)
{
WORD wPropId = 0;
LPBYTE pBuffer = NULL;
DWORD dwBuffer = 0;
CEOID oid = CeReadRecordPropsEx(m_hDB,CEDB_ALLOWREALLOC,&wPropId,NULL,&pBuffer,&dwBuffer,NULL);
if(oid)
{
record.Initialize((CEPROPVAL*)pBuffer);
LocalFree(pBuffer);
}
return oid;
}
CEOID CUssdDB::Read(CEOID oid,CUssdRecord& record)
{
WORD wPropId = 0;
LPBYTE pBuffer = NULL;
DWORD dwBuffer = 0;
CEOID oidnew = CeReadRecordPropsEx(m_hDB,CEDB_ALLOWREALLOC,&wPropId,NULL,&pBuffer,&dwBuffer,NULL);
if(oidnew)
{
record.Initialize((CEPROPVAL*)pBuffer);
LocalFree(pBuffer);
}
return oidnew;
}
CEOID CUssdDB::Write(CUssdRecord& record)
{
CEPROPVAL* pVal = record.GetValue();
CEOID oid = CeWriteRecordProps(m_hDB,0,MAX_FIELDS,pVal);
delete[] pVal;
return oid;
}
CEOID CUssdDB::Write(CEOID oid,CUssdRecord& record)
{
CEPROPVAL* pVal = record.GetValue();
CEOID oidnew = CeWriteRecordProps(m_hDB,oid,MAX_FIELDS,pVal);
delete[] pVal;
return oidnew;
}
BOOL CUssdDB::Delete(CEOID oid)
{
return CeDeleteRecord(m_hDB,oid);
}
BOOL CUssdDB::MoveFirst()
{
CEOID oid = CeSeekDatabaseEx(m_hDB,CEDB_SEEK_BEGINNING,0,0,NULL);
return (oid != NULL);
}
BOOL CUssdDB::MoveLast()
{
CEOID oid = CeSeekDatabaseEx(m_hDB,CEDB_SEEK_END,0,0,NULL);
return (oid != NULL);
}
BOOL CUssdDB::MoveTo(CEOID oid)
{
CEOID oidnew = CeSeekDatabaseEx(m_hDB,CEDB_SEEK_CEOID,oid,0,NULL);
return (oidnew != NULL);
}
BOOL CUssdDB::Find(LPCTSTR lpszData)
{
MoveFirst();
CUssdRecord rec;
CEOID oid = Read(rec);
BOOL bFound = FALSE;
while(oid)
{
if(wcsstr(lpszData,rec.GetData()))
{
bFound = TRUE;
break;
}
oid = Read(rec);
}
MoveFirst();
return bFound;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -