QT 数据库访问工具类源码
时间: 2023-10-23 07:10:44 浏览: 49
以下是一个基于Qt的数据库访问工具类的示例代码:
```cpp
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlQuery>
#include <QString>
#include <QVariant>
#include <QDebug>
class DatabaseHelper
{
public:
DatabaseHelper() {}
// 连接数据库
bool connect(const QString& host, const QString& databaseName, const QString& username, const QString& password)
{
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName(host);
db.setDatabaseName(databaseName);
db.setUserName(username);
db.setPassword(password);
return db.open();
}
// 查询数据
QVariantList query(const QString& sql, const QVariantList& params)
{
QVariantList result;
QSqlQuery query;
query.prepare(sql);
for (int i = 0; i < params.size(); ++i) {
query.addBindValue(params[i]);
}
if (query.exec()) {
while (query.next()) {
for (int i = 0; i < query.record().count(); ++i) {
result.append(query.value(i));
}
}
} else {
qDebug() << "Error executing query:" << sql << query.lastError().text();
}
return result;
}
// 更新数据
bool update(const QString& sql, const QVariantList& params)
{
QSqlQuery query;
query.prepare(sql);
for (int i = 0; i < params.size(); ++i) {
query.addBindValue(params[i]);
}
if (query.exec()) {
return true;
} else {
qDebug() << "Error executing query:" << sql << query.lastError().text();
return false;
}
}
// 断开数据库连接
void disconnect()
{
QSqlDatabase::database().close();
QSqlDatabase::removeDatabase(QSqlDatabase::defaultConnection);
}
};
```
在上面的代码中,我们使用QtSql库来连接数据库、查询数据和更新数据。在connect()方法中,我们通过QSqlDatabase类来设置数据库连接信息,并调用open()方法来连接数据库。在query()方法中,我们使用QSqlQuery类来执行查询语句,并将查询结果保存在QVariantList中返回。在update()方法中,我们使用QSqlQuery类来执行更新语句,并返回执行结果。在disconnect()方法中,我们使用QSqlDatabase类来关闭数据库连接并移除数据库连接。