急!C++ 备份mySQL数据库!请各位大侠指点,小女感激不尽!

bshtly 2010-09-06 04:35:52
我使用了如下脚本通过mysqldump备份数据库:
cd D:\Program Files\mysql-5.2.3\bin
mysqldump -uroot -p123 --default-character-set=utf8 --opt --extended-insert=false --triggers -R --hex-blob -x xysrlmpdb >d:\xysrlmpdb.sql
但由于路径有限制,每台电脑上的MYSQL安装路径不一样,所以,如果在程序里写代码备份,必须每次都要根据写文件,比较麻烦,不知道有没有别的办法可以让mysqldump执行起来,且能通过C++程序里将执行的参数传进去达到备份的目的。
我用过CreateProcess()来调用mysqldump数据库,但是传参过程中,程序识别不到“>”操作符,用转义“\”也识别不到,如果将“>”操作符后面的备份输出文件去了,则可以备份到屏幕,代码如下:(程序里的参数识别不到“>”操作符)
STARTUPINFO si;
PROCESS_INFORMATION pi;
memset(&si, 0, sizeof(STARTUPINFO));
memset(&pi, 0, sizeof(PROCESS_INFORMATION));

si.cb = sizeof(STARTUPINFO);
si.wShowWindow = SW_SHOW;
si.dwFlags = STARTF_USESHOWWINDOW;

//得到工程目录下的TXT文件
char szFilePath[MAX_PATH];
GetModuleFileName(NULL, szFilePath, MAX_PATH - 1);
std::string strFilePath = szFilePath;
int nPos = strFilePath.rfind('\\');
if(nPos == -1) return -1;
strFilePath = strFilePath.substr(0, nPos+1);
strFilePath += "test.txt";
////
char szCmd[MAX_PATH + 201];
_snprintf(szCmd, MAX_PATH + 200, "NotePad.exe %s", strFilePath.c_str());
std::cout << "创建进程命令行:" << szCmd << std::endl;

BOOL bSucceed = CreateProcess(NULL, "\"D:\\Program Files\\mysql-5.2.3\\bin\\mysqldump.exe\"mysqldump -uroot -p123 --default-character-set=utf8 --opt --extended-insert=false --triggers -R --hex-blob -x xysrlmpdb>d:\xysrlmpdb.sql ", NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
if(bSucceed)
std::cout << "创建进程成功" << std::endl;
else
std::cout << "创建进程失败" << std::endl;
...全文
180 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
guobin190 2010-09-07
  • 打赏
  • 举报
回复
头像不错。。
o(╯□╰)o。。。
bshtly 2010-09-07
  • 打赏
  • 举报
回复
没有用的,我现在用脚本执行了,但是我不知道怎么去判断备份成功没有,或者恢复成功没有,我可以到数据库里或电脑里看,但是程序里怎么判断?
Myth_cn 2010-09-06
  • 打赏
  • 举报
回复
[Quote=引用楼主 bshtly 的回复:]
rlmpdb>d:\xysrlmpdb.sql
[/Quote]
也许不是不能识别">",也许是你这里应该用"\\"
luoqi 2010-09-06
  • 打赏
  • 举报
回复
mysql没有像mssql一样,没有作业功能?
bshtly 2010-09-06
  • 打赏
  • 举报
回复
我也知道用脚本呀
可是用脚本由于文件的路径总会改变的,所以用脚本每次都得写文件,比较麻烦,执行效率也不高!
ayw215 2010-09-06
  • 打赏
  • 举报
回复
啥错误?
ps:这种玩意就应该用脚本做的,py两三句就搞定,用c++不讨好~

64,670

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧