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();

        }

猜你喜欢

转载自blog.csdn.net/kangshuaibing/article/details/85121982