我的部分代码:
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;
}