⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 database.cpp

📁 使用C开发的嵌入式平台软件源程序.有串行通讯、数据库入库等功能。
💻 CPP
字号:

#include "stdafx.h"
#include "Database.h"

CDatabase g_DB;

CDatabase::CDatabase(){
	BOOL bResult1 = CeMountDBVol(&m_guid1,TEXT("\\Storage Card\\Station.cdb"),OPEN_ALWAYS);//只能在硬件上运行.
    bool bResult = bResult1 ? true : false;
	ASSERT(bResult);
	m_hDB1 = CeOpenDatabaseEx(&m_guid1,&m_oid1,TEXT("Station"),0,0,NULL);
	if(m_hDB1 == INVALID_HANDLE_VALUE){
	    CEDBASEINFO ced;
	    ZeroMemory(&ced, sizeof(CEDBASEINFO));
	    ced.dwSize = sizeof(CEDBASEINFO);
	    ced.dwFlags = CEDB_VALIDNAME;
	    wcscpy(ced.szDbaseName, TEXT("Station"));
	    m_oid1 = CeCreateDatabaseEx(&m_guid1,&ced);
	    if(m_oid1) ASSERT(true);
	    else ASSERT(false);
	    m_hDB1 = CeOpenDatabaseEx(&m_guid1,&m_oid1,TEXT("Station"),0,0,NULL);
	    if(m_hDB1 != INVALID_HANDLE_VALUE) ASSERT(true);
	    else ASSERT(false);
	}
	DWORD dwIndex;
	CEOID oid = CeSeekDatabase(m_hDB1, CEDB_SEEK_BEGINNING,0,&dwIndex);

	bResult1 = CeMountDBVol(&m_guid2,TEXT("\\Storage Card\\Data.cdb"),OPEN_ALWAYS);//只能在硬件上运行.
    bResult = bResult1 ? true : false;
	ASSERT(bResult);
	m_hDB2 = CeOpenDatabaseEx(&m_guid2,&m_oid2,TEXT("Data"),0,0,NULL);
	if(m_hDB2 == INVALID_HANDLE_VALUE){
	    CEDBASEINFO ced;
	    ZeroMemory(&ced, sizeof(CEDBASEINFO));
	    ced.dwSize = sizeof(CEDBASEINFO);
	    ced.dwFlags = CEDB_VALIDNAME;
	    wcscpy(ced.szDbaseName, TEXT("Data"));
	    m_oid2 = CeCreateDatabaseEx(&m_guid2,&ced);
	    if(m_oid2) ASSERT(true);
	    else ASSERT(false);
	    m_hDB2 = CeOpenDatabaseEx(&m_guid2,&m_oid2,TEXT("Data"),0,0,NULL);
	    if(m_hDB2 != INVALID_HANDLE_VALUE) ASSERT(true);
	    else ASSERT(false);
	}
	oid = CeSeekDatabase(m_hDB2, CEDB_SEEK_BEGINNING,0,&dwIndex);

	bResult1 = CeMountDBVol(&m_guid3,TEXT("\\Storage Card\\Send.cdb"),OPEN_ALWAYS);//只能在硬件上运行.
    bResult = bResult1 ? true : false;
	ASSERT(bResult);
	m_hDB3 = CeOpenDatabaseEx(&m_guid3,&m_oid3,TEXT("Send"),0,0,NULL);
	if(m_hDB3 == INVALID_HANDLE_VALUE){
	    CEDBASEINFO ced;
	    ZeroMemory(&ced, sizeof(CEDBASEINFO));
	    ced.dwSize = sizeof(CEDBASEINFO);
	    ced.dwFlags = CEDB_VALIDNAME;
	    wcscpy(ced.szDbaseName, TEXT("Send"));
	    m_oid3 = CeCreateDatabaseEx(&m_guid3,&ced);
	    if(m_oid3) ASSERT(true);
	    else ASSERT(false);
	    m_hDB3 = CeOpenDatabaseEx(&m_guid3,&m_oid3,TEXT("Send"),0,0,NULL);
	    if(m_hDB3 != INVALID_HANDLE_VALUE) ASSERT(true);
	    else ASSERT(false);
	}
	oid = CeSeekDatabase(m_hDB3, CEDB_SEEK_BEGINNING,0,&dwIndex);

	bResult1 = CeMountDBVol(&m_guid4,TEXT("\\Storage Card\\PassWord.cdb"),OPEN_ALWAYS);//只能在硬件上运行.
    bResult = bResult1 ? true : false;
	ASSERT(bResult);
	m_hDB4 = CeOpenDatabaseEx(&m_guid4,&m_oid4,TEXT("PassWord"),0,0,NULL);
	if(m_hDB4 == INVALID_HANDLE_VALUE){
	    CEDBASEINFO ced;
	    ZeroMemory(&ced, sizeof(CEDBASEINFO));
	    ced.dwSize = sizeof(CEDBASEINFO);
	    ced.dwFlags = CEDB_VALIDNAME;
	    wcscpy(ced.szDbaseName, TEXT("PassWord"));
	    m_oid4 = CeCreateDatabaseEx(&m_guid4,&ced);
	    if(m_oid4) ASSERT(true);
	    else ASSERT(false);
	    m_hDB4 = CeOpenDatabaseEx(&m_guid4,&m_oid4,TEXT("PassWord"),0,0,NULL);
	    if(m_hDB4 != INVALID_HANDLE_VALUE) ASSERT(true);
	    else ASSERT(false);
	}
	oid = CeSeekDatabase(m_hDB3, CEDB_SEEK_BEGINNING,0,&dwIndex);
}

CDatabase::~CDatabase(){
	BOOL bResult = CeUnmountDBVol(&m_guid1);
	bResult = CeUnmountDBVol(&m_guid2);
	bResult = CeUnmountDBVol(&m_guid3);
	bResult = CeUnmountDBVol(&m_guid4);
	ASSERT(bResult);
}

bool CDatabase::SeekStationDB(DWORD dwSeekType, DWORD dwValue){//查找一条记录。
	DWORD dwIndex;
	CEOID oid = CeSeekDatabase(m_hDB1, dwSeekType, dwValue, &dwIndex);
	if(oid) return true;
	else return false;
}

bool CDatabase::ReadStationRecord(CRecordStation &record){//读取一条记录.
	BYTE *prgBuffer = NULL;
	DWORD dwBuffer = 0;
	WORD wPropId = 0;
	CEOID oid = CeReadRecordPropsEx(m_hDB1,CEDB_ALLOWREALLOC,&wPropId,NULL,&prgBuffer,&dwBuffer,NULL);
	if(oid){record.PropValToRecord((CEPROPVAL *) prgBuffer);
		    delete prgBuffer;return true;}
	else{delete prgBuffer;return false;}
}

bool CDatabase::AddStationRecord(CRecordStation record){//增加一条记录.
 	CEPROPVAL *prgPropVal = record.NewPropVal();
	CEOID oid = CeWriteRecordProps(m_hDB1,0,14,prgPropVal);
	record.DeletePropVal(prgPropVal);
	if(m_oid1) return true;
	else return false;
}

bool CDatabase::UpdateStationRecord(CRecordStation record){//更新一条记录.
 	DWORD dwIndex;
	CEOID oid = CeSeekDatabase(m_hDB1, CEDB_SEEK_CURRENT, 0, &dwIndex);
	CEPROPVAL *prgPropVal = record.NewPropVal();
	oid = CeWriteRecordProps(m_hDB1,oid,14,prgPropVal);
	record.DeletePropVal(prgPropVal);
	CeFlushDBVol (&m_guid1);//永久存贮数据.
	if(m_oid1) return true;
	else return false;
}

bool CDatabase::DeleteStationRecord(int nIndex){//删除一条记录.
	DWORD dwIndex;
	CEOID oid = CeSeekDatabase(m_hDB1, CEDB_SEEK_CURRENT, nIndex, &dwIndex);
	ASSERT(oid);
	BOOL bResult = CeDeleteRecord(m_hDB1, oid);
	CeFlushDBVol (&m_guid1);//永久存贮数据.
	return bResult ? true : false;
}

bool CDatabase::SeekDataDB(DWORD dwSeekType, DWORD dwValue){//查找一条记录。
	DWORD dwIndex;
	CEOID oid = CeSeekDatabase(m_hDB2, dwSeekType, dwValue, &dwIndex);
	if(oid) return true;
	else return false;
}

bool CDatabase::ReadDataRecord(CRecordData &record){//读取一条记录.
	BYTE *prgBuffer = NULL;
	DWORD dwBuffer = 0;
	WORD wPropId = 0;
	CEOID oid = CeReadRecordPropsEx(m_hDB2,CEDB_ALLOWREALLOC,&wPropId,NULL,&prgBuffer,&dwBuffer,NULL);
	if(oid){record.PropValToRecord((CEPROPVAL *) prgBuffer);
		    delete prgBuffer;return true;}
	else{delete prgBuffer;return false;}
}

bool CDatabase::AddDataRecord(CRecordData record){//增加一条记录.
 	CEPROPVAL *prgPropVal = record.NewPropVal();
	CEOID oid = CeWriteRecordProps(m_hDB2,0,5,prgPropVal);
	record.DeletePropVal(prgPropVal);
	CeFlushDBVol (&m_guid2);//永久存贮数据.
	if(m_oid2) return true;
	else return false;
}

bool CDatabase::UpdateDataRecord(CRecordData record){//更新一条记录.
 	DWORD dwIndex;
	CEOID oid = CeSeekDatabase(m_hDB2, CEDB_SEEK_CURRENT, 0, &dwIndex);
	CEPROPVAL *prgPropVal = record.NewPropVal();
	oid = CeWriteRecordProps(m_hDB2,oid,5,prgPropVal);
	record.DeletePropVal(prgPropVal);
	CeFlushDBVol (&m_guid2);//永久存贮数据.
	if(m_oid2) return true;
	else return false;
}

bool CDatabase::DeleteDataRecord(int nIndex){//删除一条记录.
	DWORD dwIndex;
	CEOID oid = CeSeekDatabase(m_hDB2, CEDB_SEEK_CURRENT, nIndex, &dwIndex);
	ASSERT(oid);
	BOOL bResult = CeDeleteRecord(m_hDB2, oid);
	CeFlushDBVol (&m_guid2);//永久存贮数据.
	return bResult ? true : false;
}

bool CDatabase::SeekSendDB(DWORD dwSeekType, DWORD dwValue){//查找一条记录。
	DWORD dwIndex;
	CEOID oid = CeSeekDatabase(m_hDB3, dwSeekType, dwValue, &dwIndex);
	if(oid) return true;
	else return false;
}

bool CDatabase::ReadSendRecord(CRecordSend &record){//读取一条记录.
	BYTE *prgBuffer = NULL;
	DWORD dwBuffer = 0;
	WORD wPropId = 0;
	CEOID oid = CeReadRecordPropsEx(m_hDB3,CEDB_ALLOWREALLOC,&wPropId,NULL,&prgBuffer,&dwBuffer,NULL);
	if(oid){record.PropValToRecord((CEPROPVAL *) prgBuffer);
		    delete prgBuffer;return true;}
	else{delete prgBuffer;return false;}
}

bool CDatabase::AddSendRecord(CRecordSend record){//增加一条记录.
 	CEPROPVAL *prgPropVal = record.NewPropVal();
	CEOID oid = CeWriteRecordProps(m_hDB3,0,5,prgPropVal);
	record.DeletePropVal(prgPropVal);
	CeFlushDBVol (&m_guid3);//永久存贮数据.
	if(m_oid3) return true;
	else return false;
}

bool CDatabase::UpdateSendRecord(CRecordSend record){//更新一条记录.
 	DWORD dwIndex;
	CEOID oid = CeSeekDatabase(m_hDB3, CEDB_SEEK_CURRENT, 0, &dwIndex);
	CEPROPVAL *prgPropVal = record.NewPropVal();
	oid = CeWriteRecordProps(m_hDB3,oid,5,prgPropVal);
	record.DeletePropVal(prgPropVal);
	CeFlushDBVol (&m_guid3);//永久存贮数据.
	if(m_oid3) return true;
	else return false;
}

bool CDatabase::DeleteSendRecord(int nIndex){//删除一条记录.
	DWORD dwIndex;
	CEOID oid = CeSeekDatabase(m_hDB3, CEDB_SEEK_CURRENT, nIndex, &dwIndex);
	ASSERT(oid);
	BOOL bResult = CeDeleteRecord(m_hDB3, oid);
	CeFlushDBVol (&m_guid3);//永久存贮数据.
	return bResult ? true : false;
}

bool CDatabase::SeekPassWordDB(DWORD dwSeekType, DWORD dwValue){//查找一条记录。
	DWORD dwIndex;
	CEOID oid = CeSeekDatabase(m_hDB4, dwSeekType, dwValue, &dwIndex);
	if(oid) return true;
	else return false;
}

bool CDatabase::ReadPassWordRecord(CRecordPassWord &record){//读取一条记录.
	BYTE *prgBuffer = NULL;
	DWORD dwBuffer = 0;
	WORD wPropId = 0;
	CEOID oid = CeReadRecordPropsEx(m_hDB4,CEDB_ALLOWREALLOC,&wPropId,NULL,&prgBuffer,&dwBuffer,NULL);
	if(oid){record.PropValToRecord((CEPROPVAL *) prgBuffer);
		    delete prgBuffer;return true;}
	else{delete prgBuffer;return false;}
}

bool CDatabase::AddPassWordRecord(CRecordPassWord record){//增加一条记录.
 	CEPROPVAL *prgPropVal = record.NewPropVal();
	CEOID oid = CeWriteRecordProps(m_hDB4,0,2,prgPropVal);
	record.DeletePropVal(prgPropVal);
	CeFlushDBVol (&m_guid4);//永久存贮数据.
	if(m_oid4) return true;
	else return false;
}

bool CDatabase::UpdatePassWordRecord(CRecordPassWord record){//更新一条记录.
 	DWORD dwIndex;
	CEOID oid = CeSeekDatabase(m_hDB4, CEDB_SEEK_CURRENT, 0, &dwIndex);
	CEPROPVAL *prgPropVal = record.NewPropVal();
	oid = CeWriteRecordProps(m_hDB4,oid,2,prgPropVal);
	record.DeletePropVal(prgPropVal);
	CeFlushDBVol (&m_guid4);//永久存贮数据.
	if(m_oid4) return true;
	else return false;
}

bool CDatabase::DeletePassWordRecord(int nIndex){//删除一条记录.
	DWORD dwIndex;
	CEOID oid = CeSeekDatabase(m_hDB4, CEDB_SEEK_CURRENT, nIndex, &dwIndex);
	ASSERT(oid);
	BOOL bResult = CeDeleteRecord(m_hDB4, oid);
	CeFlushDBVol (&m_guid4);//永久存贮数据.
	return bResult ? true : false;
}











⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -