QT读写Sqlite数据库三种方式
在Qt中,有三种主要的方法可以用于读写SQLite数据库:
- 使用Qt的SQL数据库接口
- 使用Qt的查询模块
- 使用Qt的事务模块
下面是每种方法的示例代码:
- 使用Qt的SQL数据库接口:
#include <QtSql>
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(":memory:");
bool ok = db.open();
QSqlQuery query;
query.exec("create table test (id int, text string)");
query.exec("insert into test values(1, 'hello')");
query.exec("select * from test");
while (query.next()) {
QString text = query.value(1).toString();
qDebug() << text;
}
- 使用Qt的查询模块:
#include <QtSql>
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(":memory:");
bool ok = db.open();
QSqlQuery query;
query.exec("create table test (id int, text string)");
QSqlQuery insertQuery;
insertQuery.prepare("insert into test values(?, ?)");
insertQuery.addBindValue(1);
insertQuery.addBindValue("hello");
insertQuery.exec();
QSqlQuery selectQuery;
selectQuery.exec("select * from test");
while (selectQuery.next()) {
QString text = selectQuery.value(1).toString();
qDebug() << text;
}
- 使用Qt的事务模块:
#include <QtSql>
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(":memory:");
bool ok = db.open();
QSqlQuery query;
query.exec("create table test (id int, text string)");
QSqlQuery insertQuery;
insertQuery.prepare("insert into test values(?, ?)");
QSqlTransaction transaction = db.transaction();
if (transaction.open()) {
insertQuery.addBindValue(1);
insertQuery.addBindValue("hello");
insertQuery.exec();
transaction.commit();
}
QSqlQuery selectQuery;
selectQuery.exec("select * from test");
while (selectQuery.next()) {
QString text = selectQuery.value(1).toString();
qDebug() << text;
}
以上代码都是在SQLite数据库上创建一个表,插入一条记录,然后查询并打印出这条记录。这三种方法各有优缺点,具体使用哪一种取决于你的具体需求。例如,如果你需要执行多个查询,你可能会选择第一种方法,因为它可以方便地链式执行多个查询。如果你需要确保数据的一致性和完整性,你可能会选择第三种方法,因为它提供了事务支持。
评论已关闭