QT sqlite数据库增删改查
时间: 2025-01-17 08:51:31 浏览: 44
### 关于在Qt中对SQLite数据库进行增删改查操作
#### 创建和初始化数据库连接
为了能够在Qt应用程序中使用SQLite,需先创建并初始化到SQLite数据库的连接。这通常通过`QSqlDatabase`类完成。
```cpp
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlError>
#include <QDebug>
class DatabaseManager : public QObject {
Q_OBJECT
public:
explicit DatabaseManager(QObject *parent = nullptr);
~DatabaseManager();
private:
QSqlDatabase db;
};
DatabaseManager::DatabaseManager(QObject *parent) :
QObject(parent), db(QSqlDatabase::addDatabase("QSQLITE")) {
db.setDatabaseName("example.db");
if (!db.open()) {
qCritical() << "Failed to connect to database:" << db.lastError().text();
}
}
DatabaseManager::~DatabaseManager(){
if (db.isOpen()){
db.close();
}
}
```
上述代码展示了如何设置一个新的SQLite数据库连接[^3]。
#### 插入数据记录
向表内插入新纪录可以通过执行SQL语句来实现:
```cpp
bool insertRecord(const QString &name, int age){
QSqlQuery query;
bool success = query.exec(QString("INSERT INTO people(name, age) VALUES('%1', %2)").arg(name).arg(age));
if (!success){
qDebug() << "Insert failed:" << query.lastError();
}
return success;
}
```
这段代码定义了一个函数用于往名为`people`的数据表里添加一条新的人员信息记录[^2]。
#### 查询数据记录
查询特定条件下的所有匹配项可利用预处理语句提高效率与安全性:
```cpp
void selectRecords(){
QSqlQuery query;
query.prepare("SELECT name, age FROM people WHERE age > ?");
query.addBindValue(18);
if(query.exec()){
while (query.next()){
QString name = query.value(0).toString();
int age = query.value(1).toInt();
qDebug() << "Name:" << name << ", Age:" << age;
}
}else{
qDebug() << "Select error:" << query.lastError();
}
}
```
此部分实现了基于年龄筛选出大于指定数值的所有人的姓名及其对应的年龄。
#### 更新现有记录
更新已存在的条目同样依赖于标准SQL命令:
```cpp
bool updateRecord(int id, const QString &newName){
QSqlQuery query;
bool success = query.exec(QString("UPDATE people SET name='%1' WHERE id=%2").arg(newName).arg(id));
if (!success){
qDebug() << "Update failed:" << query.lastError();
}
return success;
}
```
这里提供了一种方法去修改具有给定ID的人的名字。
#### 删除选定记录
最后,删除不需要的数据行也是必不可少的功能之一:
```cpp
bool deleteRecord(int id){
QSqlQuery query;
bool success = query.exec(QString("DELETE FROM people WHERE id=%1").arg(id));
if (!success){
qDebug() << "Delete failed:" << query.lastError();
}
return success;
}
```
该片段说明了怎样依据唯一标识符移除某个人员的信息。
阅读全文
相关推荐

















