vc编程实现对MYSQL数据库的备份与恢复
vc编程实现对MYSQL数据库的备份与恢复,在网上找了一些资料,但是很少,不知道有没有人做过,有这方经验的,能来给点信息,我自己也做了下,感觉mysql的备份语句在ADO中总是出错,很是郁闷,现在把一些代码贴出来,大家帮忙找找错误和提一些有意思建议,本人不胜感激
以下是ADO的操作:
m_pConnection->Open("DSN=info;", /*数据源名称*/
"root", /*用户*/
"123456",0); /*密码*/
_bstr_t vSQL;
//执行时出错,说语法错误,但是在命令行模式下运行可以
//vSQL = "mysqldump -uroot -p123456 "+DB_DateBase+" > "+dataDir+" ";
//执行时出错,说语法错误,在DATABASE这个地方就开始出错了
vSQL = "BACKUP DATABASE info TO DISK = 'c:\\info.bak'";
//执行时成功,为什么这个可以成功呢,而其他的不可以
//vSQL = "SELECT * INTO OUTFILE 'c:\\info.txt' FROM info";
m_pConnection->Execute(vSQL,NULL,adCmdText);
以下是用CDatabase的操作:
//出错跟ADO的差不多
CDatabase m_db1;
m_db1.Open(_T( "info" ),FALSE,FALSE,_T("ODBC;UID=root;PWD=123456"));
m_db1.ExecuteSQL(vSQL);
用WinExec执行:
CString filecontent = " -uroot -p123456 "+DB_DateBase+" > "+dataDir+"";
CString sqlpath = "D:\\Program Files\\MySQL\\MySQL Server 5.0\\bin\\mysqldump";
filecontent = sqlpath +filecontent; // mysqldump路径文件及备份参数设置
UINT rlt;
rlt=WinExec (filecontent ,0); // 通过API 函数调用mysqldump并执行备份
//调试时rlt = 33,只要大于32就执行成功,可是没有文件输出
switch (rlt)
{
case 0:
MessageBox("The system is out of memory or resources.");break;
case ERROR_BAD_FORMAT:
MessageBox("The .exe file is invalid.");break;
case ERROR_FILE_NOT_FOUND:
MessageBox("The specified file was not found.");break;
case ERROR_PATH_NOT_FOUND:
MessageBox("The specified path was not found.");break;
default:
MessageBox("success");
}
请大家给点意见,看看是什么地方出了问题,还是我的方法不正确呢