qsqlodbc.dll 是 Qt 框架 SQL 模块下的数据库驱动插件,属于 Qt 的 sqldrivers 插件家族。它位于 Qt 安装目录的 plugins/sqldrivers/ 下,作用是充当 Qt 上层数据库抽象层与操作系统底层 ODBC(Open Database Connectivity)接口之间的桥梁。
1. 驱动加载与注册
当程序调用 QSqlDatabase::addDatabase("QODBC") 时,Qt 的 QSqlDriverPlugin 机制会在 sqldrivers 目录中查找 qsqlodbc.dll,通过其导出的插件工厂函数实例化 QODBCDriver 对象,完成驱动注册。
2. 连接管理
解析 DSN、UID、PWD 及完整连接字符串,借助 SQLAllocHandle、SQLDriverConnect 等 ODBC API 分配环境句柄与连接句柄,维护连接的建立、复用与释放。
3. 语句执行与结果集映射
把 QSqlQuery 的 exec、prepare 请求翻译为 SQLPrepare、SQLExecute、SQLExecDirect,并把结果集列信息封装为 QSqlRecord、QSqlField,完成 ODBC 数据类型与 QVariant 之间的双向转换。
4. 事务与元数据
实现 beginTransaction、commitTransaction、rollbackTransaction,并提供 tables()、record()、primaryIndex()、foreignKeys() 等元数据查询接口。
5. 错误封装
将 SQLSTATE、原生错误码与错误文本整理为 QSqlError 向上层返回。