QSqlDatabase *dbR=new QSqlDatabase();
*dbR = QSqlDatabase::addDatabase("QMYSQL","dbr");
dbR->setHostName("192.168.1.201");
dbR->setDatabaseName("clinic");
dbR->setUserName("clinic");
dbR->setPassword("clinic");
if( !dbR->open())
{
QMessageBox::critical(0,QObject::tr("远程数据库未能连接"),dbR->lastError().text());
return 1;
}
QSqlDatabase *dbL=new QSqlDatabase();
*dbL = QSqlDatabase::addDatabase("QMYSQL","dbl");
dbL->setHostName("localhost");
dbL->setDatabaseName("clinic");
dbL->setUserName("clinic");
dbL->setPassword("clinic");
if( !dbL->open())
{
QMessageBox::critical(0,QObject::tr("本地数据库未能连接"),dbL->lastError().text());
return 1;
}
QSqlQuery *sq1=new QSqlQuery(*dbL);
QSqlQuery *sq2=new QSqlQuery(*dbR);
sq1->exec("select field1,field2,field3 from table1");
while(sq1->next())
{
QString s="insert into table2 (field1,field2,field3...) values (";
s=s+ sq1->value(0).asString()+",";
s=s+ sq1->value(1).asString()+",";
s=s+ sq1->value(2).asString()+")";
sq2->exec(sq);
}
大致是这样,我就是这么用的。为了减少网络负担,把一些能在本地处理的东西,一些中间过程的表放在本地,只在必要的时候才访问远程表。