现需要把一个数据库中数据取出来存到另一个数据库中,使用的都是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();
}