采用dao数据库引擎访问access数据库,程序只要实现对日志的自动备份即可,但是在软件测试中发现,如果连续向数据表(数据库中只有一个日志表)中写数据的话,当7000次左右的时候,系统就会崩溃,死在那里了,请高手指点,万分感谢!!写日志的代码段如下:
void ADDLOG(CString ID_1,
CString ID_2,
CString State,
CString Name,
CString LogType,
CString Event,
CString LogDate)
{
//1 判断日志审计开启/关闭
//2 判断是否存在Status,不存在则创建后向数据表中写日志记录,存在直接写日志记录
//3 向表单Status添加新的记录
CString strFileName="Status";
if (!CheckTable(strFileName))
{
CreateTable(); // 不存在则创建
} int tag=0;
tag = AfxGetApp()->GetProfileInt("SYSCONFIG","CHECKLOG",0);
if (tag==1)
{
CDaoDatabase m_logDB; CString strPath;
CString strDBFile;
GetModuleFileName(NULL,strPath.GetBufferSetLength (MAX_PATH),MAX_PATH);
strPath.ReleaseBuffer();
int nPos;
nPos=strPath.ReverseFind ('\\');
strPath=strPath.Left(nPos);
CString strSr;
strSr = strPath+"\\log.mdb"; m_logDB.Open(strSr);// CDaoRecordset m_statusRS(&m_logDB);
CString str="select * from Status";
m_statusRS.Open(dbOpenDynaset,str);
int recordnum=0;
if (m_statusRS.IsBOF()&&m_statusRS.IsEOF())
{
recordnum=0;
}
else
{
m_statusRS.MoveLast();
recordnum=m_statusRS.GetRecordCount();
} m_statusRS.Close();
m_logDB.Close(); int SetRecordNum = AfxGetApp()->GetProfileInt("SYSCONFIG","LOGBACKUPTIME",1000);
if ( recordnum >= SetRecordNum)
{
CTime CreateTime;
CreateTime=CTime::GetCurrentTime();
CString strTime=CreateTime.Format("%Y%m%d%H%M%S");
CString strFileName="Log"+strTime+".mdb";
BackUpLog(strFileName);//备份日志文件
} CDaoDatabase m_AddDB;
m_AddDB.Open(strSr); CDaoRecordset m_AddRS(&m_AddDB);
m_AddRS.Open(dbOpenDynaset,str);
m_AddRS.AddNew();
m_AddRS.SetFieldValue("ID_1",(char *)(LPCTSTR)ID_1);
m_AddRS.SetFieldValue("ID_2",(char *)(LPCTSTR)ID_2);
m_AddRS.SetFieldValue("STATE",(char *)(LPCTSTR)State);
m_AddRS.SetFieldValue("NAME",(char *)(LPCTSTR)Name);
m_AddRS.SetFieldValue("LOGTYPE",(char *)(LPCTSTR)LogType);
m_AddRS.SetFieldValue("EVENT",(char *)(LPCTSTR)Event);
m_AddRS.SetFieldValue("LOGDATE",(char *)(LPCTSTR)LogDate);
m_AddRS.Update();
m_AddRS.Close(); m_AddDB.Close();
}
}
另外还是建议用ADO吧,请参考一下:http://blog.csdn.net/xsc2001/archive/2008/08/28/2841301.aspx
另外还是建议用ADO吧,请参考一下:http://blog.csdn.net/xsc2001/archive/2008/08/28/2841301.aspx