介绍
使用QProcess类启动cmd命令行,传入参数登录oracle数据库,执行备份与恢复的sql语句.
代码示例,亲测可用
下面是备份的代码,恢复时类似,只需把sql语句中的exp换成imp即可.
备份sql语句解析,这里是按表备份:
host exp 用户名/密码@数据库名 file=保存路径 tables(表1,表2…)
QProcess t_Process(this);//应用程序类
t_Process.setProcessChannelMode(QProcess::MergedChannels);
QStringList argument;//参数列表
argument << "/c" << "sqlplus";
t_Process.start("cmd",argument);//启动cmd程序,传入参数
bool isok = t_Process.waitForStarted();
qDebug()<<"["<<__FILE__<<"]"<<__LINE__<<__FUNCTION__<<" "<<isok;//打印启动是否成功
t_Process.write("system\r\n");//输入oracle账号
t_Process.write("oracle\r\n");//输入oracle密码
t_Process.write("host exp system/oracle@orcl file=d:/backup.dmp tables=(BASESTATIONDB,TEST_TABLE)\r\n");//输入备份sql语句
t_Process.closeWriteChannel();//关闭输入通道
t_Process.waitForFinished();
QString strTemp=QString::fromLocal8Bit(t_Process.readAllStandardOutput());//获取程序输出
t_Process.close();//关闭程序
qDebug()<<"["<<__FILE__<<"]"<<__LINE__<<__FUNCTION__<<" "<<strTemp;//打印输出