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

📄 datarecord.cpp

📁 电子监控的网络编程实例
💻 CPP
📖 第 1 页 / 共 2 页
字号:
			CString(")							   ");
		
		bRst = pConn->Execute(sql);		
		if(!bRst)
			throw 0;

		sql=CString("create table HPHZ( ")+
			CString(" HZ varchar(2) primary key,			   ")+
			CString(" PY varchar(5)			   ")+
			CString(")							   ");
		
		bRst = pConn->Execute(sql);		
		if(!bRst)
			throw 0;

		if(pTxtFile.Open(".\\HPHZ.dat",CFile::modeRead | CFile::typeText))
		{
			while(pTxtFile.GetPosition()<pTxtFile.GetLength())
			{
				pTxtFile.ReadString(sql);
				bRst = pConn->Execute(sql);	
			}
			pTxtFile.Close();
		}

		sql=CString("create table WZBK( ")+
			CString(" HPHM varchar(12) primary key,			   ")+
			CString(" BKYY varchar(255),			   ")+
			CString(" BKSJ DateTime,			   ")+
			CString(" BKDW varchar(50),			   ")+
			CString(" DEAL varchar(1),			   ")+
			CString(" CLRQ DateTime,			   ")+
			CString(" HPZL varchar(2),			   ")+
			CString(" HPYS BYTE			   ")+
			CString(")							   ");
		
		bRst = pConn->Execute(sql);		
		if(!bRst)
			throw 0;

		sql=CString("create table WZLX( ")+
			CString(" WZBH varchar(6) primary key,			   ")+
			CString(" WZMS varchar(100),				   ")+
			CString(" YXJ  int )							   ");
		
		bRst = pConn->Execute(sql);		
		if(!bRst)
			throw 0;

		if(pTxtFile.Open(".\\WZLX.dat",CFile::modeRead | CFile::typeText))
		{
			while(pTxtFile.GetPosition()<pTxtFile.GetLength())
			{
				pTxtFile.ReadString(sql);
				bRst = pConn->Execute(sql);	
			}
			pTxtFile.Close();
		}

		sql=CString("create table BKYY( ")+
			CString(" BKID AUTOINCREMENT primary key,")+
			CString(" BKMS varchar(255)			            ")+		
			CString(")				            	");
		
		bRst = pConn->Execute(sql);		
		if(!bRst)
			throw 0;

		sql="insert into bkyy (BKMS) VALUES('未年检车辆')";
		pConn->Execute(sql);	
		sql="insert into bkyy (BKMS) VALUES('违章未处理车辆')";
		pConn->Execute(sql);	
		sql="insert into bkyy( BKMS) VALUES('报废车辆')";
		pConn->Execute(sql);	
		sql="insert into bkyy (BKMS) VALUES('肇事逃逸车辆')";
		pConn->Execute(sql);
		
	}catch(...){
		try{
			if (pConn->IsOpen())
				pConn->Close();
		}catch(...){
		}
		
		try{
			if(GetFileAttributes(dbName)!=0xffffffff)
				DeleteFile(dbName);
		}catch(...){
		}
		
		WriteLog("创建纪录数据库失败!",1);
		return(-1);
	}

	
	WriteLog("新建纪录数据库成功!",0);
	return(0);
}

char CDataRecord::InitRecordDB()
{
	CString DirName=CfgDir;
	int CreateFlag;
	switch (GetFileAttributes(DirName))
	{
	case FILE_ATTRIBUTE_DIRECTORY:
		if(GetFileAttributes(DirName+CString(RecordDatabase))==0xffffffff)
		{
			CreateFlag = RestoreRecordDB();
			if(CreateFlag<0)
				CreateFlag=CreateRecordDB();
			else
			{
				WriteLog("恢复Record.mdb库成功",0);
			}
			if(CreateFlag<0)
			{
				return(CreateFlag);
			}
			else
			{
				try	
				{
					CreateFlag=OpenRecordDB();
				}
				catch(...)
				{
					WriteLog("打开纪录数据库失败",1);
				}
				if(CreateFlag<0) return(CreateFlag);
			}
		}
		else
		{
			CreateFlag = CompactRecordDB();

			if(CreateFlag<0)
			{
				CreateFlag = RestoreRecordDB();
				if (CreateFlag>=0)
					WriteLog("恢复Record.mdb库成功",0);
			}

			if(CreateFlag<0)
				CreateFlag = CreateRecordDB();
			
			if(CreateFlag<0)
			{
				return(CreateFlag);
			}
			else
			{
				try	
				{
					CreateFlag=OpenRecordDB();
				}
				catch(...)
				{
					WriteLog("打开纪录数据库失败",1);
				}
				if(CreateFlag<0) return(CreateFlag);
			}
			
			if(CreateFlag<0) return(CreateFlag);

		}
		break;
	default: //Exit Other Attribute File
		try{
			DeleteFile(DirName);
		}
		catch (...) {
		}
		
		if (!CreateDirectory(DirName,NULL))	
			return(-1);
		CreateFlag = RestoreRecordDB();
		if(CreateFlag<0)
			CreateFlag = CreateRecordDB();
		else
		{
			WriteLog("恢复Record.mdb库成功",0);
		}
		if(CreateFlag<0)
			return(CreateFlag);
		else
		{
			try
			{
				CreateFlag=OpenRecordDB();
			}
			catch(...)
			{
				WriteLog("打开纪录数据库失败",1);
			}
			if(CreateFlag<0)	return(CreateFlag);
		}
		break;
	}
	return(0);
}

char CDataRecord::OpenRecordDB()
{
	char CreateFlag=0;
	CString dbName;
	dbName=CString(CfgDir)+CString(RecordDatabase);
	switch(GetFileAttributes(dbName))
	{
	case FILE_ATTRIBUTE_ARCHIVE :
	case FILE_ATTRIBUTE_NORMAL:
		break;
	default:
		//CreateDelayDB();
		return(-1);
	}

	try{
		if (pRst->IsOpen())	pRst->Close();
		if (pConn->IsOpen()) pConn->Close();
	}
	catch(...)
	{
		WriteLog("关闭纪录数据库连接失败!",1);
	}


	if( !(pConn->ConDB(dbName) ))
	{
		WriteLog("连接纪录数据库失败!",1);
		CreateFlag=-1;
	}

	if(CreateFlag>=0)
	{
		try 
		{  
			pRst->SetConnection(pConn);		

		}
		catch(...)
		{
			WriteLog("打开纪录数据库失败!",1);
			CreateFlag=-1;
		}
	}
	
	if (CreateFlag<0)
	{
		try{
			if (pRst->IsOpen())	pRst->Close();
			if (pConn->IsOpen()) pConn->Close();
		}
		catch(...)
		{
			WriteLog("关闭纪录数据库失败!",1);
		}
		CreateFlag = RepairRecordDB();
		if(CreateFlag<0)
			return CreateFlag;
		//如果修复成功

		try 
		{
			pConn->ConDB(dbName);
		}catch(...)
		{
			WriteLog("打开纪录数据库失败!",1);
			return(-1);
		}
		if(CreateFlag>=0)
		{
			try {  


				pRst->SetConnection(pConn);	


				}catch(...){
					WriteLog("打开纪录数据库失败!",1);
					CreateFlag=-1;
				}
		}
	}

	return(0);
}

char CDataRecord::RepairRecordDB()
{
	char CreateFlag=0;


//	DisableWatchDog();
	CreateFlag = pConn->CompactDatabase(CString(CfgDir)+CString(RecordDatabase));
//	EnableWatchDog();
	return CreateFlag;				
}

char CDataRecord::RestoreRecordDB()
{
	char CreateFlag=-1;
	CString ss,sDir;
	TCHAR pDIR[3];	
	int len = m_strHardDisk.GetLength();
//	if (len<6) return -1; //没有其他磁盘
	for(int i=3;i<len;i+=3)
	{
		pDIR[0] = m_strHardDisk.GetAt(i);
		pDIR[1] = ':';
		pDIR[2] = '\0';
		ss = pDIR;
		sDir = ss+"\\"+CString(RecordSavePath);
		ss = sDir+CString(RecordDatabase);
		
//		DisableWatchDog();
			try
			{
				CopyFile(ss, CString(CfgDir)+CString(RecordDatabase), FALSE);
				CreateFlag = OpenRecordDB();
				if(CreateFlag>=0)
				{
//					EnableWatchDog();
					return CreateFlag;
				}
			}
			catch(...)
			{
			}
//			EnableWatchDog();
	
	}	
	return -1;
}

char CDataRecord::CompactRecordDB()
{
	char CreateFlag=0;

//	DisableWatchDog();
	CreateFlag = pConn->CompactDatabase(CString(CfgDir)+CString(RecordDatabase));
//	EnableWatchDog();
	return CreateFlag;

	return 0;
}

char CDataRecord::BackupRecordDB()
{
	CString ss,sDir;
	TCHAR pDIR[3];	
	int len = m_strHardDisk.GetLength();
//	if (len<6) return -1; //没有其他磁盘
	for(int i=3;i<len;i+=3)
	{
		pDIR[0] = m_strHardDisk.GetAt(i);
		pDIR[1] = ':';
		pDIR[2] = '\0';
		ss = pDIR;
		sDir = ss+"/"+CString(RecordSavePath);
		ss = sDir+CString(RecordDatabase);
		
		switch(GetFileAttributes(sDir)){
		case FILE_ATTRIBUTE_DIRECTORY:
			break;
		default:
			try{
				DeleteFile(sDir);
			}
			catch (...) {
			}
			if(!CreateDirectory(sDir,NULL))
			{
				WriteLog("创建备份目录失败-"+sDir,0);			
				return -1;
			}
		}
		
	//	DisableWatchDog();
		try
		{
			CopyFile(CString(CfgDir)+CString(RecordDatabase), ss, FALSE);
		}
		catch(...)
		{
		}
	//	EnableWatchDog();
	
	}
	
	return 0;
}


UINT BackupRecordThread(PVOID pParam)
{
//	MyData->BackupRecordDB();
	return 0;
}


CString CDataRecord::GetSaveDirectory()
{
	CString sDirectory=m_strDisk+"\\"+RecordSavePath;
	return sDirectory;

}

⌨️ 快捷键说明

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