1. 简介
使用QT连接数据库是一件非常方便的事情,这是由于QT提供了一些数据库支持库,可以帮助我们快速连接上关系型数据库,比如MSSQL,通过这篇文章,您将学习到如何在QT应用程序中快速连接MSSQL数据库,编写简洁易懂的代码,并进行 CRUD 操作。
2. 准备工作
2.1 安装MSSQL驱动
在连接MSSQL数据库之前,我们需要先为 QT 安装一个MSSQL 驱动,当前仅有的官方支持的驱动是 Microsoft SQL Server 驱动程序(QODBC)和 SQL Server 驱动程序(QODBC3), 安装方法如下:
下载 Microsoft SQL Server 驱动程序(QODBC)或 SQL Server 驱动程序(QODBC3)
安装之后进入QT,选择 “QT Options”, 选择 “Build & Run”, 在 “Kits” 中找到对应的方案,选择 “Add”
在弹出的窗口中选择相应的数据库驱动程序路径,这里选择 “sqlsrv” 驱动的路径
2.2 创建一个QT项目
在连接数据库之前,我们需要创建一个 QT 项目。
打开 QT Creater
选择 “File” -> “New File or Project…”
选择 “Application” -> “QT Quick Application”
填写好项目名称,选择好项目存储路径
点击 “Next”
选择保留默认设置,点击 “Next”
选择保留默认设置,点击 “Next”
点击 “Finish” 完成 QT 项目创建
3. 连接数据库
3.1 在QT中连接MSSQL数据库
连接 MSSQL 数据库需要指定主机名,端口号,数据库名称,用户名和密码。在 QT 中,可以使用以下代码来连接 MSSQL 数据库。
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName(QString("DRIVER={sqlsrv};SERVER=%1;DATABASE=%2;UID=%3;PWD=%4;").arg(serverName).arg(dbName).arg(userName).arg(password));
if(!db.open()) {
qDebug() << "Error: Failed to connect database." << db.lastError();
} else {
qDebug() << "Database connected successfully!";
}
其中,serverName 为主机名,dbName 为数据库名称,userName 和 password 为数据库用户名和密码。
3.2 断开数据库连接
在连接数据库之后,需要在应用程序退出前断开数据库连接,以释放资源,使用以下代码来实现:
db.close();
4. CRUD 操作
下面,我们将通过一个示例来演示如何在 QT 中使用 QSqlQuery 进行数据库的 CRUD 操作。
4.1. 创建一个数据库表
首先,我们需要创建一个数据库表,用来存储一些用户信息,用以下代码创建表。
CREATE TABLE users (
id INT IDENTITY(1,1) PRIMARY KEY,
name NVARCHAR(50) NOT NULL,
email NVARCHAR(50) NOT NULL,
age INT NOT NULL
)
4.2. 插入数据
接下来,我们向上一步创建的 users 表中插入一些数据,使用以下代码实现插入数据功能。
QSqlQuery query;
query.prepare("INSERT INTO users (name, email, age) VALUES (?, ?, ?)");
query.addBindValue("Tom");
query.addBindValue("Tom@example.com");
query.addBindValue(18);
if(!query.exec()) {
qDebug() << "Error: Failed to insert data." << query.lastError();
} else {
qDebug() << "Data inserted successfully!";
}
4.3. 查询数据
查询在 SQL 中是最基础的操作之一,我们使用以下代码查询所有的用户信息。
QSqlQuery query("SELECT * FROM users");
while(query.next()) {
int id = query.value(0).toInt();
QString name = query.value(1).toString();
QString email = query.value(2).toString();
int age = query.value(3).toInt();
qDebug() << "ID:" << id << "Name:" << name << "Email:" << email << "Age:" << age;
}
4.4. 更新数据
如果用户的具体信息发生了变化,我们可以使用以下代码更新一个用户的信息。
QSqlQuery query;
query.prepare("UPDATE users SET age = ? WHERE name = ?");
query.addBindValue(20);
query.addBindValue("Tom");
if(!query.exec()) {
qDebug() << "Error: Failed to update data." << query.lastError();
} else {
qDebug() << "Data updated successfully!";
}
4.5. 删除数据
我们可以使用以下代码删除某个用户的信息。
QSqlQuery query;
query.prepare("DELETE FROM users WHERE name = ?");
query.addBindValue("Tom");
if(!query.exec()) {
qDebug() << "Error: Failed to delete data." << query.lastError();
} else {
qDebug() << "Data deleted successfully!";
}
5. 总结
通过本篇文章,您已经掌握了 QT 如何连接 MSSQL 数据库,并进行数据库的 CRUD 操作。MSSQL是一个非常强大的关系型数据库,几乎所有的企业级应用都会选择其作为数据库,QT的支持让您可以在使用 QT 的同时,也可以轻松连接 MSSQL 数据库,实现多种多样的业务需求。