现在我的程序要调用MySQL的备份工具来对MySQL数据库进行备份。不知你使用过MySQL没有,MySQL的备份工具mysqldump是一个控制台程序,双击它并不能打开它的界面。在运行对话框输入备份命令也不行,必须要在cmd下输入命令运行才行。开始我以为通过CreatProcess函数可以调用mysqldump.我的代码是这样的:STARTUPINFO si;
PROCESS_INFORMATION pi;
si.cb=sizeof(STARTUPINFO);
si.lpReserved=NULL;
si.lpDeaktop=NULL;
si.lpTitle=NULL;
si.dwFlags=STARTF_USESHOWWINDOW;
si.wShowWindow=SW_SHOW;
si.cbReserved2=0;
si.lpReserved2=NULL;
CString strProcess;
strProcess.Format("mysqldump --user=root --password=828707 stu>E:\\114.dmp");::CreatProcess(NULL,(lpstr)(LPCTSTR)strProcess,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi);上面mysqldump --user=root --password=828707 stu>E:\\114.dmp是mysql的备份命令,功能是对数据库stu进行备份,生成备份文件E:\114.dmp.程序运行没有出错,但是结果并没有生成备份文件114.dmp。如果先在运行对话框里输入cmd,弹出cmd的界面,然后输入mysqldump --user=root --password=123456 stu>E:\114.dmp 这样就能生成备份文件114.dmp。 然后我用过ShellExecute(this->m_hWnd,"open","mysqldump","--user=root --password=828707 stu>E:\\114.dmp","", SW_SHOW );
不行,出现不能访问的错误。再用WinExec("mysqldump --user=root --password=828707 stu>E:\\114.dmp",SW_SHOW); 也不行。 我想能用的都用完了。
PROCESS_INFORMATION pi;
si.cb=sizeof(STARTUPINFO);
si.lpReserved=NULL;
si.lpDeaktop=NULL;
si.lpTitle=NULL;
si.dwFlags=STARTF_USESHOWWINDOW;
si.wShowWindow=SW_SHOW;
si.cbReserved2=0;
si.lpReserved2=NULL;
CString strProcess;
strProcess.Format("mysqldump --user=root --password=828707 stu>E:\\114.dmp");::CreatProcess(NULL,(lpstr)(LPCTSTR)strProcess,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi);上面mysqldump --user=root --password=828707 stu>E:\\114.dmp是mysql的备份命令,功能是对数据库stu进行备份,生成备份文件E:\114.dmp.程序运行没有出错,但是结果并没有生成备份文件114.dmp。如果先在运行对话框里输入cmd,弹出cmd的界面,然后输入mysqldump --user=root --password=123456 stu>E:\114.dmp 这样就能生成备份文件114.dmp。 然后我用过ShellExecute(this->m_hWnd,"open","mysqldump","--user=root --password=828707 stu>E:\\114.dmp","", SW_SHOW );
不行,出现不能访问的错误。再用WinExec("mysqldump --user=root --password=828707 stu>E:\\114.dmp",SW_SHOW); 也不行。 我想能用的都用完了。
/k后面的可用 " "引起来
WinExec("cmd /k \"mysqldump --user=root --password=828707 stu>E:\\114.dmp\"",SW_SHOW); 要不要指定mysqldump的路径啊?
WinExec("cmd /k \"mysqldump --user=root --password=828707 stu>E:\\114.dmp\"",SW_SHOW); 也有问题。
这样做只是弹出一个cmd界面,上面是E:\> 正确的应是 WinExec("cmd /k mysqldump \"--user=root --password=828707 stu>E:\\114.dmp\"",SW_SHOW); 不过还是要谢谢你!