Qt数据库接口用于连接和操作数据库,逻辑上共分为三层:
- 驱动层
- SQL API层
- 用户界面层
驱动层
这一层在特定数据库和SQL API层之间提供低级别的沟通桥梁。
SQL API层
这一层用于访问数据库,QSqlDataBase类用于创建数据库链接,QSqlQuery类用于与数据库进行交互(执行sql语句),其它还提供了QSqlError(执行sql语句产生的错误信息)、QSqlField(表字段信息)、QSqlIndex(表索引)和QSqlRecord(记录信息)。
用户界面层
这些类用于将数据库中的数据和一些widgets联系在一起,这些类包括QSqlQueryModel、QSqlTableModel和QSqlRelationalTableModel,这三个类可用于Qt的model/View框架。
- QSqlQueryModel,需要执行sql语句从数据库中获取数据
- QSqlTableModel,不需要执行sql语句,自带接口,只读
- QSqlRelationalTableModel,在QSqlTableModel基础上支持读写
在这三层api的基础上,你可以调用QSqlQuery对数据库进行访问,执行增删改查操作。也可以通过用户界面层的三个Model,以表格或是列表的形式显示数据库中某个表或某个视图的数据。还可以实现自己的委托(QStyledItemDelegate)来设置表格中单元的不同显示效果,或是用QSortFilterProxyModel实现模糊搜索,等等。