zoukankan      html  css  js  c++  java
  • qt sql 数据库

    Qt SQL C++ Classes

    QSqlDatabase:Represents a connection to a database,代表了一个连接的数据库
    QSqlDriverCreator:Template class that provides a SQL driver factory for a specific driver type,
    QSqlDriverCreatorBase:The base class for SQL driver factories
    QSqlDriver:Abstract base class for accessing specific SQL databases
    QSqlDriverPlugin:Abstract base for custom QSqlDriver plugins
    QSqlError:SQL database error information,,,sql访问数据库时的错误信息
    QSqlField:Manipulates the fields in SQL database tables and views
    QSqlIndex:Functions to manipulate and describe database indexes
    QSqlQuery:Means of executing and manipulating SQL statements,执行或维护sql语句
    QSqlRecord:Encapsulates a database record,压缩封装了数据库的记录
    QSqlResult:Abstract interface for accessing data from specific SQL databases,提供了访问sql获得数据的接口

    • QSqlQueryModel

    该类提供了一种针对SQL结果集的只读数据模式,是用于执行SQL语句和遍历结果集的高级接口。它建立在QSqlQuery之上,能够为显示类如QTableView提供数据。例如:

        QSqlQueryModel *model = new QSqlQueryModel;

          model->setQuery("SELECT name, salary FROM employee");
          model->setHeaderData(0, Qt::Horizontal, tr("Name"));
          model->setHeaderData(1, Qt::Horizontal, tr("Salary"));
          QTableView *view = new QTableView;
          view->setModel(model);

          view->show();

    //上述代码,我们设置了对象model的检索,然后设置了显示表头字段。QSqlQueryModel 也能够用来编程访问数据库,而不需要显示。

          QSqlTableModel model;
          model.setTable("employee");
          model.select();
    int salary = model.record(4).value("salary").toInt();
    //上述代码获取sql结果集中第四条记录的salary单元的值。假如salary位于第2列,也可通过如下代码获取。
          int salary = model.data(model.index(4, 2)).toInt();

    默认情况model为只读模式,为了让其可读写,可重写集成该类重写setData和flags函数。另一个选择是使用QSqlTableModel类,该类可对数据库的单个表格进行读写操作。querymodel例子演示了怎么通过QSqlQueryModel显示sql结果,用户怎么继承QSqlQuerModel来自定义数据内容,怎样创建一个基于QSqlQueryModel的可读写模式。在sql语句中,如果数据库不能返回查询中所选行的数量,则该模型将以增量方式获取行。更多信息参加fetchMore()。

    重要函数:

    1,int columnCount(),introwCount():获取当前列数或行数

    2,fetchMore():从数据库获取更多行

    3,headerData():返回指定行的表头数据

    4,insertColumns():指定位置插入一定数目的列

    5,lastError():返回最近一次的错误信息

    6,query():返回当前检索

    7,record():范围指定行的记录
    QSqlRelationalDelegate:Delegate that is used to display and edit data from a QSqlRelationalTableModel.用于显示/编辑来自QSqlRelationalTableMode的数据的代理
    QSqlRelation:Stores information about an SQL foreign key:
    QSqlRelationalTableModel:Editable data model for a single database table, with foreign key support
    QSqlTableModel:Editable data model for a single database table

     QSqlRecord

    • QSqlField

    用于操控sql数据库和视图中的字段,代表着数据库或视图中单列的特性,比如数据类型,列名称,也代表着一列所包含的能够改变或显示的值。QSqlField对象很少在应用程序代码中显式创建。 通常可以通过已经包含字段列表的QSqlRecords间接访问它们。

    重要函数:

    • defaultValue,setDefaultValue返回和设置字段的默认值

    • isAutoValue,如果值通过数据库自动生成,则返回true,如自动增加的主键值
    • setAutoValue,标记该字段是否为为自动生成的值。
    • isGenerated,setGenerated,返回或设置值的生成状态。设置生成状态。 如果gen为false,则不会为此字段生成SQL; 否则,Qt类(例如QSqlQueryModel和QSqlTableModel)将为此字段生成SQL。
    • length,setLength,返回或设置字段长度。设置字段长度时,对于字符串,这是字符串可以容纳的最大字符数。 对于其他类型,含义也有所不同。
    • name,setName,返回或设置字段名称
    • precision,setPrecision,设置或返回字段精度,只对数字类型有用。
    • isReadOnly,setReadOnly,判断是否为只读字段,设置为只读字段,对于只读字段,不能设置其值也不能清空其值。
    • setRequired,setRequiredStatus(),requiredStatus().,设置或范围字段是否必须的,有必须的(QSqlField::Required)和可选择(QSqlField::Optional)的两种状态。
    • setType,type,设置或返回当前字段的类型,即为QVariant的类型之一
    • value,setValue,设置或返回当前字段的值,设置为空值时,采用clear
  • 相关阅读:
    tigerVNC远程桌面,跨内网
    Nutch 二次开发之parse正文内容
    在一个字符串中找到第一个仅仅出现一次的字符。
    图像处理之霍夫变换(直线检測算法)
    EJB3.0开发环境的搭建
    uestc 250 数位dp(水)
    Matlab画图-非常具体,非常全面
    高性能I/O设计模式Reactor和Proactor
    leetcode第一刷_Path Sum II
    PreTranslateMessage作用和用法
  • 原文地址:https://www.cnblogs.com/gethope5/p/13673454.html
Copyright © 2011-2022 走看看