我正在做一个程序,要与后台数据库紧密相连,我想定义一个QSqlDatabase类型的全局指针,只需在程序开始时连接一次,以后在每个窗体中都不用重新连接,但是好像在使用这个全局变量时出了问题,我把程序进行了简化,只保留了关键的语句,清高手帮忙看一下,谢谢!
#include <qapplication.h>
#include <qsqldatabase.h>
QSqlDatabase *db_p;
bool ConnectDB( QSqlDatabase* db ){
if (db->isOpen())
return TRUE;
if( !db->open() )
return FALSE;
return TRUE;
}
void initDB(){
db_p = QSqlDatabase::addDatabase( "QMYSQL3" );
db_p->setDatabaseName("powersky");
db_p->setUserName("root");
db_p->setPassword("root");
db_p->setHostName("192.168.100.3");
}
int main( int argc, char ** argv )
{
QApplication a( argc, argv );
...
initDB();
ConnectDB(db_p); //这里出错了!
...
return a.exec();
}
如果把initDB()函数的内容放到ConnectDB函数的开头,就不会出这问题,但是ConnectDB函数还要在别处调用,不能那样做,请问这是为什么?