数据存储
保存和加载数据
QIODevice类是Qt Core中所有文件和数据存储设备的基类。所有用于读取和写入数据的类都继承自它。
设备的示例是QFile、QBuffer、QTcpSocket和QProcess。
- QFile用于读写文本、二进制文件和资源。
- QBuffer类为QByteArray提供QIODevice接口。
- QTcpSocket使开发人员能够建立 TCP 连接并传输数据流。
- QProcess用于启动外部程序,并读取和写入该进程。
具体内容见如下链接:
- 输入/输出和网络(I/O 相关类列表)
- 文件和数据流函数
- 序列化 Qt 数据类型
Qt 中的 SQL 支持
Qt SQL模块使用驱动插件与多个数据库 API 进行通信。Qt 有适用于SQLite、MySQL、DB2、Borland InterBase、Oracle、ODBC 和 PostgreSQL 的驱动程序。如果 Qt 不提供所需的驱动程序,也可以开发自己的驱动程序。
Qt 的 SQL 类可以分为 3 层:
层 | 目的 | 示例类 |
---|---|---|
驱动层 | 数据库和 SQL API 层之间的低级通信 | QSqlDriver , QSqlDriverCreator |
SQL API 层 | 提供对数据库的访问 | QSql数据库, QSqlQuery |
用户界面层 | 将数据库中的数据链接到数据感知小部件 | QSqlQueryModel (readonly), QSqlTableModel (read/write), QSqlRelationalTableModel (read/write with foreign-key support) |
使用除SQLite之外的所有 SQL 驱动程序,您可以连接到托管数据库系统的服务器。如果您使用嵌入式 MySQL 服务器,则不需要 MySQL 服务器即可使用该数据库系统。
有关如何构建 SQL 数据库驱动程序的说明,请参阅SQL 数据库驱动程序。
Qt SQLite插件非常适合本地存储。SQLite是一个关系数据库管理系统,包含在一个小型 (~350 KiB) C 库中。与其他数据库管理系统相比,SQLite不是从客户端应用程序访问的单独进程,而是它的一个组成部分。SQLite对单个文件进行操作,打开连接时必须将其设置为数据库名称。如果文件不存在,SQLite将尝试创建它。
SQLite对多用户和多事务有一些限制。如果您正在从不同的事务读取或写入文件,您的应用程序可能会冻结,直到一个事务提交或回滚。
设置驱动程序部分后,可以使用类QSqlQueryModel、QSqlTableModel和QSqlRelationalTableModel访问数据。QSqlTableModel和QSqlRelationalTableModel提供可与 Qt 的项目视图一起使用的可编辑模型。QSqlTableModel具有对单个表的读/写访问权限,而QSqlRelationalTableModel具有对主表的读/写访问权限(而不是具有外键的表)。
以下页面包含有关将 SQL 合并到应用程序中的信息:
网友评论