我正在使用QT-C ++编写一个GUI应用程序,它将在我的本地sqlite3数据库中创建一个Oracle DB表的副本。
到目前为止,我所能做的就是复制Oracle DB本身的Oracle DB表 -
void MainWindow::on_replicate_button_clicked()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QOCI");
db.setHostName("oracle.db.ip.address");
db.setDatabaseName("dbname");
db.setUserName("uid");
db.setPassword("pwd");
db.setPort(port);
db.open();
QString query_to_replicate;
query_to_replicate=QString("CREATE TABLE %1 AS %2").arg("REPLICA_TABLE").arg(ui->lineEdit->text()); //The name of replicated table is REPLICA_TABLE and the original table's name is taken input via lineEdit
QSqlQuery query_second(query_to_replicate,db);
if (query_second.lastError().isValid())
{
qDebug() <<QDateTime::currentDateTime()<<"TABLE NOT REPLICATED "<< query_second.lastError().text();
}
else
{
qDebug() << QDateTime::currentDateTime()<<"Table created successfully ";
}
}
因此,我能够在Oracle DB中创建表的副本(其名称从lineEdit获取输入)并将其保存为Oracle DB本身中的“REPLICA_TABLE”。
但后来,当我尝试连接到本地sqlite3数据库并进行复制时,但在调用connect选项并运行程序后,当我按下复制按钮时显示错误;
QDateTime(“Thu Dec 11 16:41:44 2014”)Oracle Query FAILURE“驱动程序未加载驱动程序未加载”
如果我删除了sqlite3数据库连接线,
QSqlDatabase dbsqlite = QSqlDatabase::addDatabase("QSQLITE");
dbsqlite.setDatabaseName("/home/aj/source_db.db");
dbsqlite.open();
然后没有错误,我的程序变得毫无用处。
那么我应该使用什么策略在本地sqlite3 db表中复制原始oracle DB表?是否可以在同一个功能模块中建立多个DB连接并进行处理?