作者:looloSam | 来源:互联网 | 2023-09-25 19:24
相信大家应该在网上看到很多利用SQL语句对MySQL数据库的表或者数据库本身进行导出和导入操作。在window环境下利用dos命令行导出数据库(我的mysq直接装在c
相信大家应该在网上看到很多利用SQL语句对MySQL数据库的表或者数据库本身进行导出和导入操作。在window环境下利用dos命令行导出数据库(我的mysq直接装在c盘根目录下下,其bin目录为:c:/mysql/bin):
1、执行MySQL数据库导出操作:
c:\mysql\bin>mysqldump -uroot -proot code_command > c:/code_command
2、导入Mysql数据库操作:
常用source 命令。进入mysql数据库控制台,如:mysql -u root -p ;mysql>use code_command ;然后使用source命令,后面参数为脚本文件(如这里用到的.sql):mysql>source c:/code_command.sql
最近在MFC环境下开发需要将导入和导出功能集成到应用程序中,查询了mysql的官方API,我没有找到对应的接口,查询了 hellokandy写的博客(https://blog.csdn.net/hellokandy/article/details/80497234),也没有找到对应的接口,因此采取利用c++调用dos窗口利用sql命令实现该功能,具体代码如下:
//导出数据库
void CDlgUserMangement::OnBtnExportSQL()
{//WinExec("cmd /c C:/mysql/bin/mysqldump.exe -hlocalhost -uroot -proot code_command > c:/q/bb.sql",SW_NORMAL);// TODO: 在此添加控件通知处理程序代码CString strFile="";CFileDialog dlgFile(TRUE,_T("*.sql"),NULL,OFN_HIDEREADONLY,_T("SQL File(*.sql)|*.sql"),NULL);if (IDOK==dlgFile.DoModal()){strFile=dlgFile.GetPathName();CString cmdSQL="cmd /c C:/mysql/bin/mysqldump.exe -hlocalhost -uroot -proot code_command > "+strFile;WinExec(cmdSQL,SW_HIDE);//SW_HIDE 不闪MessageBox("数据库导出成功!","提示");}}//导入数据库
void CDlgUserMangement::OnBtnImportSQL()
{char cmdstr[1000];char path[1024];FILE *f;CString strFile &#61; "";CFileDialog dlgFile(true,_T("*.sql"),NULL,OFN_HIDEREADONLY,_T("SQL File(*sql)|*.sql"),NULL);if (dlgFile.DoModal() &#61;&#61; IDOK){strFile &#61; dlgFile.GetPathName();sprintf(cmdstr,"&#64;echo off\n");strcpy(path,"set str&#61;\"C:\\mysql\\bin\\\"\n");sprintf(cmdstr,"%s%s\n",cmdstr,path);sprintf(cmdstr,"%s%s\n",cmdstr,"%str%mysql.exe -h localhost -uroot -proot code_command <"&#43;strFile&#43;"\n");f &#61; fopen("c:\\mysql\\bin\\tmp.bat","w");fprintf(f,"%s",cmdstr);fclose(f);//WinExec("tmp.bat",SW_HIDE);//SW_HIDE 不闪ShellExecute(NULL,_T("open"),_T("c:\\mysql\\bin\\tmp.bat"),_T(""),NULL,SW_HIDE);//system("tmp.bat");remove("tmp.bat");MessageBox("数据库导入成功&#xff01;","提示");}
}