QT使用多個access數據庫

現需要把一個數據庫中數據取出來存到另一個數據庫中,使用的都是access數據庫,思路是創建兩個連接,連接名稱不一樣即可。

連接測試代碼如下,其中將QSqlDatabase db; QSqlDatabase db2;定義成全局變量,方便兩個數據庫直接切換

void UIDemo01::connectedDB()
{

    //數據庫1
     db = QSqlDatabase::addDatabase("QODBC");
    db.setDatabaseName("DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};FIL={MS Access};DBQ=DataBase\\test.accdb");
    if (db.open()) {
        qDebug() << " Connect Database Success";
    }
    else{
        qDebug() << "Connect DataBase Errror!";
        qDebug() << db.lastError().text();
        db.close();
    }


    //數據庫2
    QString db_path=ui->lineEditLookingBody->text();

    qDebug()<<db_path;
    db2 = QSqlDatabase::addDatabase("QODBC","a");
    db2.setDatabaseName(QString("DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};FIL={MS Access};DBQ=%1").arg(db_path));
    if (db2.open()) {
        qDebug() << " Connect Database2 Success";
    }
    else{
        qDebug() << "Connect DataBase2 Errror!";
        qDebug() << db2.lastError().text();
        db2.close();
    }

}

調用方法,默認調用數據庫一,若想調用數據庫2,只需聲明QSqlQuery query(db2)即可,代碼如下。

 

QSqlQuery query(db2);
        QString sql=QString("SELECT LOCAL_ID,HEIGHT FROM USER_INFO1_TBL WHERE NAME = '%1'").arg(ui->lineEditMainName->text());
        qDebug()<<sql;
        //執行sql語句
        if(!query.exec(sql))
        {
            qDebug()<<"exec sql error!";
        }
        QString local_id;
        QString height;
        //獲取內容
        if(query.next())
        {
            local_id=query.value(0).toString();
            height=query.value(1).toString();

        }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章