一个库函数解决所有问题:copy(源地址,目的地址);
//备份数据库文件
bool MainWindow::setBackupDB()
{
QString sourceFileName = QDir::currentPath()+"/temp/ICEMS.db";
// 创建备份文件夹
QDir dir(QDir::currentPath()+"/backup");
if(!dir.exists()){
dir.mkdir(QDir::currentPath()+"/backup");
}
//检查源数据库文件是否存在
bool isExist = QFile::exists(QDir::currentPath()+"/temp/ICEMS.db");
if(!isExist){
QMessageBox::about(this,QString::fromLocal8Bit("备份数据库"),
QString::fromLocal8Bit("备份失败,源数据库文件不存在!"));
return false;
}
else
{
// 获取当前时间
QDateTime current_date_time = QDateTime::currentDateTime();
QString date = current_date_time.toString("yyyy-MM-dd hh-mm-ss");
// 重构当前备份目录及文件名,加入时间字段
QString destFileName = QDir::currentPath()+"/backup/"+ QString("ICMES_backup%1.db").arg(date);
// info = QFileInfo(destFileName);
// destFileName = info.fileName();
//调用备份命令copy
if(QFile::copy(sourceFileName,destFileName))
{
return true;
}
else
{
return false;
}
}
}
//导出数据库
void MainWindow::on_pushButton_24_clicked()
{
QString sourceFileName = QDir::currentPath()+"/temp/ICEMS.db";
//检查源数据库文件是否存在
bool isExist = QFile::exists(QDir::currentPath()+"/temp/ICEMS.db");
if(!isExist){
QMessageBox::about(this,QString::fromLocal8Bit("导出数据库"),
QString::fromLocal8Bit("导出失败,源数据库文件不存在!"));
return;
}
else
{
// 获取选择文件路径
QString destFileName = QFileDialog::getSaveFileName(
this,QString::fromLocal8Bit("另存为"),sourceFileName,"*.db");
//调用备份命令copy
if(destFileName.isEmpty())
{
QMessageBox::about(this,QString::fromLocal8Bit("导出数据库"),
QString::fromLocal8Bit("导出失败,目的地址为空或取消导出!"));
return;
}
else
{
if(QFile::copy(sourceFileName,destFileName))
{
QMessageBox::about(this,QString::fromLocal8Bit("导出数据库"),
QString::fromLocal8Bit("导出成功"));
}
else
{
QMessageBox::about(this,QString::fromLocal8Bit("导出数据库"),
QString::fromLocal8Bit("导出失败,文件复制错误,检查所选目录中是否已存在相同文件名的文件!"));
}
}
}
}
//导入数据库
void MainWindow::on_pushButton_25_clicked()
{
// 关闭当前数据库连接,解除数据库文件占用
closeDatabase("link");
QString sourceFileName = QDir::currentPath()+"/temp/ICEMS.db";
QString destFileName = QFileDialog::getOpenFileName(
this,QString::fromLocal8Bit(" "
"选择要导入的数据库文件"),"C:/Users/Administrator/Desktop","*.db");
QFileInfo info(destFileName);
QString fileName = info.fileName();
if(fileName == "ICEMS.db")
{
QFile file;
file.remove(sourceFileName);
if(QFile::copy(destFileName,sourceFileName))
{
QMessageBox::about(this,QString::fromLocal8Bit("导入数据库"),
QString::fromLocal8Bit("导入成功"));
}
else
{
QMessageBox::about(this,QString::fromLocal8Bit("导入数据库"),
QString::fromLocal8Bit("导入失败,文件复制错误,检查所选目录中是否已存在相同文件名的文件!"));
}
}
else
{
if(destFileName.isEmpty())
{
QMessageBox::warning(this,QString::fromLocal8Bit("导入文件信息"),QString::fromLocal8Bit("导入失败,已取消导入!"),QMessageBox::Yes);
}
else
{
QMessageBox::warning(this,QString::fromLocal8Bit("导入文件信息"),QString::fromLocal8Bit("导入文件名错误,请修改文件名为ICEMS.db"),QMessageBox::Yes);
}
}
// 恢复当前数据库连接
createConnection();
// qDebug() << destFileName << endl << fileName;
}