在Qt界面程序中用C++操作MySQL数据库的导入与导出

前言

因为实验室的一个项目要用到数据库,我负责其中的数据表的导入导出及在服务器和客户端的传输,在开发过程中遇到了一些问题,在这里记录一下。我的开发环境是Qt5.9.8, MySQL8, C++, VS2015

单纯的用C++增删查改数据表,用Qt的QSqlDatabase、QSqlQuery、QSqlError等类就可以实现Qt程序与SQL数据库的连接及操作。因为没有系统的学习过MySQL数据库,所以在数据表的导出以及根据导出的数据表在远程数据库建立相同的数据表这个流程中遇到了一些困难。经过摸索,我找到了一种简便的方法:将本地数据表直接导出为.sql文件,远程用.sql文件恢复即可(可能熟悉数据库操作的大神早就知道,哈哈!)

数据表的导出

  • 将本地数据表导出有很多种方法,也可以导出很多种格式(例如:.txt, .xls, .xml, .sql等),但是导出哪种格式最方便导入呢,经过查询资料后,我发现.sql文件是恢复数据表的最佳格式。
  • 如何导出:
    mysqldump -u 用户名 - p 密码 你的数据库名称 > 你导出的sql文件存放的路径(注意密码是你数据库的密码)
    mysqldump -u root -p password equipment_management admin > D:/ qtAdmin.sql
    此命令的运行环境是命令行程序,因此我们需要在Qt程序运行的时候调用CMD命令行程序来执行命令
//数据表导出为.sql文件
QProcess p(0); //开启进程,需包含头文件qprocess.h
	p.start("cmd");
	p.waitForStarted();
	p.write("/c\n");
    //如果将以下路径加入系统环境变量,则可以注释掉下一语句
	p.write("cd c:\Program Files(x86)\MySQL\MySQL Server 8.0\bin\n");
	p.write("mysqldump -u root -p password equipment_management admin > D:/ qtAdmin.sql\n");
	p.waitForFinished();

数据表的导入

  1. 选择数据库 use equipment_management
  2. source .sql文件的路径,例如:source d:/qtAdmin.sql
  • 注意:与导出不同,该命令需要在CMD命令行程序中登录MySQL客户端后才能执行
//将.sql文件恢复到数据库
	QProcess p(0);
	p.start("cmd");
	p.waitForStarted();
	p.write("/c\n");
	p.write("mysql -u root -pyjm666\n");//登录MySQL客户端
	p.write("use equipment_management\n");//选择要恢复到的数据库 use 数据库名
	p.write("source d:/qtAdmin.sql\n");//用.sql文件恢复数据表
	p.waitForFinished();

你可能感兴趣的:(C++,Qt,VS2015)