新建一个控制台项目,

- // main.cpp
-
- #include
- #include
- #include
-
- int main(int argc, char *argv[])
- {
- QCoreApplication a(argc, argv);
-
- // 获取当前Qt支持的驱动列表
- QStringList drivers = QSqlDatabase::drivers();
-
- foreach (QString driver, drivers)
- {
- qDebug() << driver;
- }
-
- return a.exec();
- }
- // pro 开启 SQL 模块
- QT += sql

可以看到,现在只支持 SQLITE ,

在安装目录下 /qt-everywhere-src-6.0.0/qtbase/src/plugins/sqldrivers 可以看到各种数据库驱动源码,准备通过 QT 编译 odbc ,

在此之前先安装 odbc 开发包,
- # 安装 odbc 开发包
- sudo apt install -y unixodbc-dev
-
- # 安装 odbc 管理工具
- sudo apt install -y unixodbc
-
- # 输出 odbc 配置信息
- odbcinst -j

安装 ODBC MSSQL 驱动,
- # 微软官方文档 https://learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver15&tabs=ubuntu18-install%2Cubuntu17-install%2Cdebian8-install%2Credhat7-13-install%2Crhel7-offline#ubuntu18
-
- curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
-
- curl https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
-
- sudo apt-get update
- sudo ACCEPT_EULA=Y apt-get install -y msodbcsql17
- wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
-
- sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/20.04/mssql-server-2022.list)"
-
- sudo apt-get install -y mssql-server
-
- # 查看状态
- sudo systemctl status mssql-server --no-pager




使用 QT 打开 odbc.pro 项目,会报错找不到库,

需要配置一下 odbc.pro 文件,
- # odbc.pro
-
- TARGET = qsqlodbc
-
- HEADERS += $$PWD/qsql_odbc_p.h
- SOURCES += $$PWD/qsql_odbc.cpp $$PWD/main.cpp
-
- #QMAKE_USE += odbc
- unix: DEFINES += UNICODE
-
- OTHER_FILES += odbc.json
-
- # add odbc lib
- LIBS += -L/usr/lib/x86_64-linux-gnu/ -lodbc
- INCLUDEPATH += /usr/include/x86_64-linux-gnu
-
- PLUGIN_CLASS_NAME = QODBCDriverPlugin
- include(../qsqldriverbase.pri)

然后构建项目即可,最终可以在安装目录下找到对应生成的动态库,


到这里,QT 已经支持 ODBC 数据库了,
配置 ODBC 数据源,
- # 输出 odbc 配置信息
- odbcinst -j
-
- # odbcinst.ini 保存的是驱动信息 DRIVERS............: /etc/odbcinst.ini
- # odbc.ini 保存的是系统数据源信息 SYSTEM DATA SOURCES: /etc/odbc.ini
-
- vim /etc/odbc.ini
- # 添加以下配置
- [mssql]
- Driver=ODBC Driver 17 for SQL Server
- PORT=1433
- SERVER=localhost
- Database=mytestdb
- #USER=sa
- #Password=123456789
-
- # 连接测试
- isql mssql sa 123456789
这时候就能正常连接数据库了,接下来使用 QT 连接数据库,
- // main.cpp
- #include
- #include
- #include
- #include
-
- int main(int argc, char *argv[])
- {
- // 数据库配置
- QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
- // 配置系统数据源信息,对应 odbc.ini 文件的配置
- QString dsn = QString::fromLocal8Bit("mssql");
- // 数据源名称
- db.setDatabaseName(dsn);
- // 服务器名称
- db.setHostName("localhost");
- // 端口
- db.setPort(1433);
- // 用户名
- db.setUserName("sa");
- // 密码
- db.setPassword("123456789");
- // 数据库连接
- bool ok = db.open();
- if(ok)
- {
- qDebug() << "db open ok!";
- }
- else {
- qDebug() << "db open error: " << db.lastError();
- }
- // 数据库关闭
- db.close();
- return 0;
- }
或者使用 Qstring 连接,
- // main.cpp
- #include
- #include
- #include
- #include
-
- int main(int argc, char *argv[])
- {
- // 数据库配置
- QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
- // 配置驱动与数据库账号密码等信息,相当于 odbc.ini 文件
- QString dsn = QString("DRIVER={MSSQL};SERVER=%1;DATABASE=%2;UID=%3;PWD=%4;IC=MS-SQL").arg("localhost").arg("master").arg("sa").arg("123456789");
- // 数据源名称
- db.setDatabaseName(dsn);
- // 数据库连接
- bool ok = db.open();
- if(ok)
- {
- qDebug() << "db open ok!";
- }
- else {
- qDebug() << "db open error: " << db.lastError();
- }
-
- // 数据库关闭
- db.close();
- return 0;
- }

实际上,Qt Creator 自带 C++ 的代码格式化,如果需要自定义自己的代码格式化风格,则可以参考一下方法,
- # 安装 C 格式化工具
- sudo apt install clang-format

打开 QT 菜单【帮助】->【关于插件】,输入
Beautifier






点击工具下的“Beautifier”选项,选中“格式化当前文件”即可实现代码格式化。