在 Qt 中使用 SQLite 数据库非常简单,Qt 提供了 QSqlDatabase
和 QSqlQuery
类来处理数据库的连接、查询、插入、更新和删除等操作。下面是一个示例程序,展示如何在 Qt 中使用 SQLite 数据库。
示例代码
1. 项目配置
首先,确保在项目的 .pro
文件中添加对 Qt SQL 模块的支持:
QT += sql
2. SQLite 数据库操作示例
下面是一个简单的 Qt C++ 程序,展示如何创建 SQLite 数据库、创建表、插入数据、查询数据等操作。
#include <QCoreApplication>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <QSqlRecord>
#include <QDebug>
void initializeDatabase()
{
// 创建或打开 SQLite 数据库
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("example.db");
if (!db.open()) {
qDebug() << "Error: Failed to connect to database." << db.lastError();
return;
}
qDebug() << "Database connected successfully.";
// 创建表
QSqlQuery query;
QString createTableQuery = R"(
CREATE TABLE IF NOT EXISTS people (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER
)
)";
if (!query.exec(createTableQuery)) {
qDebug() << "Error: Failed to create table." << query.lastError();
} else {
qDebug() << "Table created successfully.";
}
}
void insertData(const QString &name, int age)
{
QSqlQuery query;
query.prepare("INSERT INTO people (name, age) VALUES (:name, :age)");
query.bindValue(":name", name);
query.bindValue(":age", age);
if (!query.exec()) {
qDebug() << "Error: Failed to insert data." << query.lastError();
} else {
qDebug() << "Data inserted successfully.";
}
}
void queryData()
{
QSqlQuery query("SELECT id, name, age FROM people");
while (query.next()) {
int id = query.value(0).toInt();
QString name = query.value(1).toString();
int age = query.value(2).toInt();
qDebug() << "ID:" << id << "Name:" << name << "Age:" << age;
}
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// 初始化数据库
initializeDatabase();
// 插入数据
insertData("John Doe", 30);
insertData("Jane Doe", 25);
// 查询数据
queryData();
return a.exec();
}
代码说明
-
创建或打开数据库:
- 使用
QSqlDatabase::addDatabase("QSQLITE")
添加一个 SQLite 数据库连接。 db.setDatabaseName("example.db");
设置数据库文件名。如果文件不存在,SQLite 会自动创建一个新的数据库文件。
- 使用
-
创建表:
- 使用
QSqlQuery
执行 SQL 语句来创建一个名为people
的表。表包含id
(自增主键)、name
(文本)和age
(整数)三个字段。
- 使用
-
插入数据:
- 使用
QSqlQuery::prepare
准备 SQL 插入语句,并使用bindValue
绑定参数,然后执行exec()
来插入数据。
- 使用
-
查询数据:
- 使用
QSqlQuery
执行 SQL 查询,并使用query.next()
遍历结果集。query.value(index)
用于访问每一行的字段值。
- 使用
运行结果
当你运行这个程序时,输出可能如下所示:
Database connected successfully.
Table created successfully.
Data inserted successfully.
Data inserted successfully.
ID: 1 Name: John Doe Age: 30
ID: 2 Name: Jane Doe Age: 25
总结
通过这个示例,你学会了如何在 Qt 中使用 SQLite 数据库,包括创建数据库、创建表、插入数据和查询数据的基本操作。Qt 的 SQL 模块提供了一个简洁的接口,使用它可以轻松地集成 SQLite 或其他 SQL 数据库。