使用Qt实现SQLite数据库操作可以分为以下几个步骤:
- 添加SQLite头文件和库文件:
在Qt项目中,需要在.pro文件中添加以下内容:
cpp
QT += sql
- 打开/创建数据库:
可以使用QSqlDatabase
类中的静态函数addDatabase()
来添加数据库驱动,例如:
cpp
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("test.db");
if(!db.open()){
qDebug() << "Can't open the database!" << endl;
exit(0);
}
示例创建了一个QSqlDatabase
对象db
,并使用静态函数addDatabase()
添加了SQLite
数据库驱动。然后使用setDatabaseName()
函数设置数据库文件名,最后使用open()
函数打开数据库,如果打开失败,则会输出一行错误信息。
- 创建表:
创建表需要使用QSqlQuery类,例如:
cpp
QSqlQuery query;
query.exec("create table student(id int primary key, name varchar)");
示例创建了一个QSqlQuery
对象query
,然后使用exec()
函数执行了创建表的SQL语句。
- 插入数据:
插入数据也需要使用QSqlQuery
类,例如:
cpp
QSqlQuery query;
query.exec("insert into student(id, name) values(1, 'Tom')");
示例创建了一个QSqlQuery
对象query
,然后使用exec()
函数执行了插入数据的SQL
语句。
- 查询数据:
查询数据需要先使用QSqlQuery类
查询数据,然后使用·QSqlRecord类·获取数据。例如:
cpp
QSqlQuery query("select * from student");
QSqlRecord rec = query.record();
int id = rec.indexOf("id");
int name = rec.indexOf("name");
while (query.next()) {
int idValue = query.value(id).toInt();
QString nameValue = query.value(name).toString();
qDebug() << idValue << nameValue << endl;
}
示例创建了一个QSqlQuery
对象query,并使用它查询了student表中的所有数据。
然后获取了查询结果的结构体rec,并使用indexOf()函数获取了id和name两列的索引。
接着使用next()函数遍历查询结果,并使用value()函数获取对应列的值。
- 更新数据:
更新数据需要使用QSqlQuery
类,例如:
cpp
QSqlQuery query;
query.exec("update student set name='John' where id=1");
示例创建了一个QSqlQuery对象query,之后使用exec()函数执行了更新数据的SQL语句。
- 删除数据:
删除数据需要使用QSqlQuery类,例如:
cpp
QSqlQuery query;
query.exec("delete from student where id=1");
示例创建了一个QSqlQuery对象query,然后使用exec()函数执行了删除数据的SQL语句。
- 事务处理:
在Qt中,事务处理需要使用QSqlDatabase
类的transaction()
和commit()
函数,例如:
cpp
QSqlDatabase::database().transaction();
QSqlQuery query;
query.exec("update student set name='John' where id=1");
query.exec("update student set name='Mike' where id=2");
QSqlDatabase::database().commit();
示例通过QSqlDatabase
类获取了打开的数据库,并使用transaction()
函数开始一个事务。然后使用QSqlQuery
类执行了两条更新数据的SQL
语句。最后使用commit()函
数提交事务,如果在执行事务期间发生了错误,可以使用rollback()
函数回滚事务。