自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

在Qt中使用QProcess備份和恢復(fù)Mysql數(shù)據(jù)庫(kù)

移動(dòng)開(kāi)發(fā)
在Qt中使用QProcess備份和恢復(fù)Mysql數(shù)據(jù)庫(kù)是本文要介紹的內(nèi)容,主要是來(lái)了解QT中數(shù)據(jù)庫(kù)如何來(lái)備份和恢復(fù),具體內(nèi)容的實(shí)現(xiàn)來(lái)看本文詳解。

使用QtMySQL數(shù)據(jù)庫(kù)開(kāi)發(fā),遇到需要備份、還原數(shù)據(jù)庫(kù)的問(wèn)題。MySQL中沒(méi)有提供將數(shù)據(jù)庫(kù)備份成.sql文件的SQL語(yǔ)句,而是提供了一個(gè)mysqldump.exe工具來(lái)完成這個(gè)功能。沒(méi)有SQL語(yǔ)句,QSqlQuery就用不成了,決定改用QProcess實(shí)現(xiàn)。

但是在Qt中使用QProcess::execute()方法怎樣都導(dǎo)不出數(shù)據(jù)來(lái),更郁悶的是在Qt提供的Qt Command Prompt命令行工具里都提示找不到mysqldump.exe程序,
剛開(kāi)始我懷疑,莫非Qt就是不支持非Windows/System32目錄指令之外的指令了?
.
上網(wǎng)搜索"qt 備份Mysql數(shù)據(jù)庫(kù)",結(jié)果就發(fā)現(xiàn)問(wèn)題的原因了。這篇"Qt中使用QProcess::execute()時(shí)需要注意的問(wèn)題",在Windows中的Qt程序使用QProcess::execute()方法,不能使用管道、重定向操作符,要有重定向操作符把內(nèi)容重定向到文件或者從文件中讀取輸入的話(huà),則需要設(shè)置QProcess對(duì)象的標(biāo)準(zhǔn)輸入、輸出文件為自己需要的文件。

一般來(lái)說(shuō)Windows中使用的命令行程序很少有用到管道和重定向的,因?yàn)閃indows的控制臺(tái)本身不支持管道和重定向操作。

但這個(gè)mysqldump就是個(gè)特例,它需要將輸出重定向到文件。

但是像

  1. QProcess::execute("mysqldump.exe -uUsrName -pUsrPsd DbName > d:/backup.sql") 

的函數(shù)是執(zhí)行不了的,至少在windows里執(zhí)行不出來(lái)。

從Qt4.2開(kāi)始QProcess提供了setStandardInputFile (), setStandardOutputFile (),  setStandardOutputProcess (). 三個(gè)函數(shù)來(lái)處理Windows中程序遇到管道和重定向問(wèn)題,用start()方法替代execute()方法,然后使用 setStandardOutputFile ()等方式重定向輸出或輸入。

具體就是,應(yīng)該將mysqldump操作寫(xiě)成下面這樣:

  1. QString Cmd = QString("mysqldump.exe --add-drop-table -u%1 -p%2 test").arg("UsrName","UsrPsd");    
  2. QString Path = QString("%1").arg("d://backup.Sql");    
  3. QProcess *poc=new QProcess;    
  4. poc->setStandardOutputFile(Path);    
  5. poc->start(Cmd);    
  6.     QString Cmd = QString("mysqldump.exe --add-drop-table -u%1 -p%2 test").arg("UsrName","UsrPsd");  
  7.     QString Path = QString("%1").arg("d://backup.Sql");  
  8.     QProcess *poc=new QProcess;  
  9.     poc->setStandardOutputFile(Path);  
  10.     poc->start(Cmd); 

相應(yīng)的還原數(shù)據(jù)庫(kù)操作應(yīng)該寫(xiě)成這樣:

  1. QString Cmd = QString("mysql.exe -u%1 -p%2 test").arg("UsrName","UsrPsd");    
  2. QString Path = QString("%1").arg("d://backup.Sql");    
  3. QProcess *poc=new QProcess;    
  4. poc->setStandardInputFile(Path);    
  5. poc->start(Cmd);   

小結(jié):在Qt中使用QProcess備份和恢復(fù)Mysql數(shù)據(jù)庫(kù)的內(nèi)容介紹完了,希望通過(guò)本文的學(xué)習(xí)能對(duì)你有所幫助!

責(zé)任編輯:zhaolei 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2023-09-21 09:31:24

MySQL數(shù)據(jù)庫(kù)

2023-12-07 15:09:23

2011-06-28 10:03:37

Qt OpenCV qmake

2010-04-12 10:40:49

Oracle數(shù)據(jù)庫(kù)

2011-01-20 10:39:09

postfixmysql

2010-10-14 09:36:47

MySQL命令行

2024-11-12 14:48:10

2010-04-12 14:19:00

Oracle數(shù)據(jù)庫(kù)備份

2019-02-28 21:20:50

MySQL備份與恢復(fù)數(shù)據(jù)庫(kù)

2010-08-09 13:30:27

DB2數(shù)據(jù)庫(kù)備份

2010-07-08 11:05:14

SQL Server數(shù)

2011-06-10 10:31:57

QT mysql linux

2024-09-10 08:00:00

PostgreSQL數(shù)據(jù)庫(kù)

2023-12-27 22:08:39

vivo數(shù)據(jù)庫(kù)

2009-04-03 10:54:49

Oracle備份恢復(fù)

2010-03-30 10:05:02

Oracle數(shù)據(jù)庫(kù)

2011-04-01 10:40:07

SQL Server數(shù)備份恢復(fù)

2023-09-12 09:45:54

Java數(shù)據(jù)庫(kù)

2010-10-14 10:18:28

MySQL數(shù)據(jù)庫(kù)備份

2011-07-05 10:16:16

Qt 數(shù)據(jù)庫(kù) SQLite
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)