我的部分代码:
QSqlError DatabaseUtility::openRemoteDatabase(const QString &connectionName, const QString &driver,
            const QString &host, int port, const QString &user, const QString &passwd, const QString &databaseName, HEHUI::DatabaseType databaseType)
 {
    QSqlError err ;
    QSqlDatabase db; 
    if(databaseType == HEHUI::M$SQLSERVER && OS_IS_WINDOWS ){
        db = QSqlDatabase::addDatabase("QODBC", connectionName);
        db.setDatabaseName(
                QString("DRIVER={SQL Server};SERVER=%1;DATABASE=%2;UID=%3;PWD=%4")
                .arg(host.trimmed())
                .arg(databaseName.trimmed())
                .arg(user.trimmed())
                .arg(passwd.trimmed())
                );
        db.open();
    }else{
    db = QSqlDatabase::addDatabase(driver, connectionName);
    db.setDatabaseName(databaseName);
    db.setHostName(host);
    db.setPort(port);
    db.open(user, passwd);
    }
    if (!db.isOpen()) {
        err = db.lastError();
        db = QSqlDatabase();
        QSqlDatabase::removeDatabase(connectionName);
        qCritical()<< QString("Database '%1' open failed!").arg(databaseName);
        qCritical()<< QString("An error occurred when opening the database: %1").arg(err.text());
    }
    qDebug()<< QString("----DatabaseUtility::openRemoteDatabase(...)~~Database connection %1 is %2").arg(connectionName).arg(db.isValid() ? "Valid" : "Invalid");
    return err;
}