Qt 数据存储(一)

数据存储

保存和加载数据

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 合并到应用程序中的信息:

  • SQL 编程
    • 数据库类
    • 执行 SQL 语句
    • 使用 SQL 模型类
    • 在表格视图中呈现数据
    • 创建数据感知表单

你可能感兴趣的:(Qt 数据存储(一))