MFC数据库操作
实现一个备份的功能:对fas.mdb文件复制因为在程序中有保持对数据库的连接
所以想在备份之前关闭连接,复制完成之后再打开
但是复制完之后就打不开连接了,注释掉复制是可以的,请问下这是为什么
复制是做成一个函数的
- C/C++ code
BOOL CFasSysManaDlg::CommonCopyFile(CString SourceFileName, CString DestFileName){ CFile sourceFile ; CFile destFile ; CFileException ex; if (!sourceFile.Open((LPCTSTR)SourceFileName,CFile::modeRead | CFile::shareDenyWrite, &ex)) { TCHAR szError[1024]; ex.GetErrorMessage(szError, 1024); CString ErrorMsg = "打开文件:" ; ErrorMsg += SourceFileName ; ErrorMsg += "失败。\n错误信息为:\n" ; ErrorMsg += szError ; AfxMessageBox(ErrorMsg); return FALSE ; } else { if (!destFile.Open((LPCTSTR)DestFileName, CFile::modeWrite | CFile::shareExclusive | CFile::modeCreate, &ex)) { TCHAR szError[1024]; ex.GetErrorMessage(szError, 1024); CString ErrorMsg = "创建文件:" ; ErrorMsg += DestFileName ; ErrorMsg += "失败。\n错误信息为:\n" ; ErrorMsg += szError ; AfxMessageBox(ErrorMsg); sourceFile.Close(); return FALSE ; } BYTE buffer[4096]; DWORD dwRead; do { dwRead = sourceFile.Read(buffer, 4096); destFile.Write(buffer, dwRead); } while (dwRead > 0); destFile.Close(); sourceFile.Close(); } return TRUE ;}
[解决办法]
直接使用copy文件多好,为什么要自己读出来再写进去呢
[解决办法]
首先打开了的文件记得关闭(在函数CommonCopyFile里的各分支控制好);
其次为啥不直接复制文件,而要读写呢;
[解决办法]
system("copy file1 file2");