1、ODBC Driver 的版本要对应上。
if (!strDbDirPath.isEmpty())
m_strDbDirPath = strDbDirPath;
m_strDatabaseName = strDatabaseName;
if (m_database.isOpen() || m_bConnected)
{
qDebug() << QString("QODBC:已经连接成功!") << "\n";
return m_database;
}
else
{
m_database = QSqlDatabase::addDatabase("QODBC");
// 这里要注意ODBC Driver 17 版本要不然可能整型和读点数读取不到
QString strConnect = QString("DRIVER={ODBC Driver 17 for SQL Server};"
"SERVER=%1;" //服务器名称
"DATABASE=%2;"//数据库名
"UID=%3;" //登录名
"PWD=%4;" //密码
)
.arg(strHostName)
.arg(strDatabaseName)
.arg(strUserName)
.arg(strPassword);
qDebug() << QString("QODBC:") << strConnect << "\n";
m_database.setDatabaseName(strConnect);
if (!m_database.open())
{
qDebug() << QString("QODBC:连接失败!") << "\n";
QString strText = m_database.lastError().text();
qDebug() << m_database.lastError().text();
}
else
{
qDebug() << QString("QODBC:连接成功!") << "\n";
m_bConnected = true;
}
}