現需要把一個數據庫中數據取出來存到另一個數據庫中,使用的都是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();
}