在本地sqlite3 db中创建Oracle DB表的副本

时间:2014-12-11 11:19:04

标签: c++ sql qt qt4

我正在使用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连接并进行处理?

0 个答案:

没有答案