1. 前言
QT作为一款跨平台的C++应用程序开发框架,为我们提供了丰富的功能和便捷的开发方式。而与之搭配使用的数据库也是非常重要的一部分,能够为我们的开发带来不少便利。Microsoft SQL Server作为一款功能强大的关系型数据库管理系统,被广泛地应用于企业级应用,这里介绍一下如何在QT中直连Microsoft SQL Server。
2. 准备工作
2.1 下载ODBC驱动
由于Microsoft SQL Server是一款关系型数据库,所以我们需要下载ODBC驱动程序。ODBC是一种面向应用程序的数据库中间件技术,可以将不同的数据库连接到应用程序中。在Windows平台下,ODBC是系统自带的。我们只需要在ODBC数据源管理器(在控制面板中)中添加对应的ODBC驱动即可。而在Linux平台下则需要在终端输入以下命令安装ODBC驱动:
sudo apt-get install unixodbc unixodbc-dev
sudo apt-get install libodbc1 libodbc1-dev
2.2 安装Microsoft SQL Server
如果我们本机没有安装Microsoft SQL Server的话,需要下载并安装。可以从官网上下载对应版本的Microsoft SQL Server,也可以选择通过Docker来安装。
3. 创建QT项目
在QT Creator中创建一个新项目,选择“Qt Widgets应用程序”类型。为了方便起见,我们可以将界面设计为QPushButton按钮和QTableWidget表格控件。在设计好所需界面后,我们需要在.pro文件中添加相应的库文件。以下是我们需要添加的库文件:
QT += core gui
QT += sql // 添加sql库
QT += widgets
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++11
# MySQL library
INCLUDEPATH += C:/Program Files/Microsoft SQL Server/ODBC Driver 17 for SQL Server/include
LIBS += -LC:/Program Files/Microsoft SQL Server/ODBC Driver 17 for SQL Server/lib64 \
-lodbc32 \
-luser32 \
-lgdi32 \
-lwinspool \
-lcomdlg32 \
-ladvapi32 \
-lshell32 \
-lole32 \
-loleaut32 \
-lnetapi32 \
-luuid \
-lws2_32 \
-lmpr \
-lwinmm \
-lversion \
-lodbc32.lib \
-loleaut32.lib
4. 连接数据库
4.1 建立连接
在程序运行过程中需要与Microsoft SQL Server建立连接,在“mainwindow.cpp”文件中添加以下代码段:
QString dsn = "driver={ODBC Driver 17 for SQL Server};server=localhost;database=test;uid=sa;pwd=12345678";
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setPort(1433); // 设置端口
db.setDatabaseName(dsn);
bool ok = db.open();
if(!ok) {
qDebug() << db.lastError().text();
QMessageBox::warning(this, "", "Database Connection Failed!");
}
else {
qDebug() << "连接成功!" << endl;
}
4.2 查询数据
连接数据库成功后,我们就可以对数据库中的数据进行操作了。下面我们以查询数据库中所有数据并显示在表格中为例:
QString sql = "SELECT * FROM test";
QSqlQuery query;
query.exec(sql);
while (query.next()) {
int id = query.value(0).toString();
QString name = query.value(1).toString();
QString gender = query.value(2).toString();
double score = query.value(3).toDouble();
ui->tableWidget->insertRow(ui->tableWidget->rowCount()); // 插入新行
ui->tableWidget->setItem(ui->tableWidget->rowCount()-1, 0, new QTableWidgetItem(QString::number(id)));
ui->tableWidget->setItem(ui->tableWidget->rowCount()-1, 1, new QTableWidgetItem(name));
ui->tableWidget->setItem(ui->tableWidget->rowCount()-1, 2, new QTableWidgetItem(gender));
ui->tableWidget->setItem(ui->tableWidget->rowCount()-1, 3, new QTableWidgetItem(QString::number(score)));
}
5. 结束语
本文就是介绍了如何在QT中直接连接Microsoft SQL Server,希望本文能够帮助到大家。如有不足之处,请多多指教。